C#.use(better, IronPython=”WPF”) 《記事一覧》


《承前》

〓 リストボックス ListBox


リスト項目を操作すると、選択した色を表示します。

マークアップ:部品を配置する


Green

リストボックス ListBox を識別できるように Name="listBox" を指定するとともに、各リスト項目 ListBoxItem には、色名を表わす文字列(Green など)を指定します。

分離コード:イベントハンドラーを設定する

    self._listBox.SelectionChanged += self.selectionChanged

リストボックスは、イベント SelectionChanged に呼応して、イベントハンドラー selectionChanged を起動します。


    def selectionChanged(self, sender, e):
s = sender.SelectedItem.Content
self._textBox.Text = s
self._colorBox.Background = getattr(Brushes, s)

イベントハンドラー selectionChanged では、選択したリスト項目に合わせて、表示色を再設定します。ここでは、色の名前(各リスト項目の値)を使って、色情報を管理します。

ラジオボタン RadioButton


ラジオボタンを操作すると、選択した色を表示します。

マークアップ:部品を配置する

     Green 

ラジオボタン RadioButton を識別できるように Name="G" などを指定します。

分離コード:イベントハンドラーを設定する

      for e in "RGB":
getattr(self, e).Checked += self.checked

ラジオボタンは、イベント Checked に呼応して、イベントハンドラー checked を起動します。


    def checked(self, sender, e):
s = sender.Content
self._textBox.Text = s
self._colorBox.Background = getattr(Brushes, s)

イベントハンドラー checked では、選択したボタンに合わせて、表示色を再設定します。ここでは、色の名前(各ボタンの値)を使って、色情報を管理します。

〓 スライダー Slider


スライダーを操作すると、選択した色を(各成分を調整して)表示します。

マークアップ:部品を配置する

    

各スライダー Slider を識別できるように Name="R" などを指定します。

分離コード:イベントハンドラーを設定する

      for e in "RGB":
getattr(self, e).MouseMove += self.mouseMove

スライダーは、イベント MouseMove に呼応して、イベントハンドラー mouseMove を起動します。


    def mouseMove(self, sender, e):
s = sender.Value
self._textBox.Text = `s`
self._colorBox.Background = self._backgroundColor()

def _backgroundColor(self):
color = {}
for e in "RGB":
color[e] = int(getattr(self, e).Value)
return SolidColorBrush(
Color.FromRgb(color["R"], color["G"], color["B"]))

イベントハンドラー mouseMove では、スライダーの動きに合わせて、表示色を再設定します。ここでは、色の成分(各スライダーの値)ごとに、色情報を管理します。
《Point》C# の隘路:メタボリック症候群にご用心 C# のようなハイブリッド型の OOP 言語では、属性、メソッド、プロパティーなど、同じ概念を実現するのにさまざまな構文規則が規定されています。そのため、コードが肥大化する傾向(メタボリック症候群)にあります。Python に限らず、純粋な OOP 言語では、これらを包括する概念モデルがその背景にあるので、より洗練されたコードを記述できます。□

Last updated♪2009/09/06