2b)機能の実現:ConcreteImplementor
Bridge::ConcreteImplementor では、Bridge::Implementor で規定されたプロトコルに従って、任意のサービスを実現します。
## -------------------- Bridge::ConcreteImplementor class ItemList(XList, ListImplementor): def append(self, item): self.view.Items.Add(item)
プロパティー Items に対して、項目 Item を追加 Add します。
def colorName(self, item): return item
引数 item に指定された色の名前 item をリターン値とします。
## -------------------- Bridge::ConcreteImplementor class GridList(XList, ListImplementor): def __init__(self, view, client): XList.__init__(self, view, client) self.view.ItemsSource = ObservableCollection[object]()
データバインディングを導入するには、各項目ごとに依存性を管理できる ObservableCollection を利用します。すると、各リスト項目は、データソースの情報を反映します。
def append(self, item): self.view.ItemsSource.Add(ColorItem(item))
プロパティー ItemsSource に対して、項目 ColorItem(item) を追加 Add します。
def colorName(self, item): return item.name
引数 item に指定された色情報をもとに、色の名前 item.name をリターン値とします。