!!!WPF コントロールライブラリ [WPF][Silverlight] {{amazon 4798114200}} *WPFはUIパッケージに期待する標準コントロールの大部分を提供します(DataGridなど、少数の例外もあり)。 *コンテンツモデルとテンプレートがビジュアルの大幅なカスタマイズを可能とするため、コントロールの重要な部分は、コントロールが提供するもでると対話モデルということになる。 !!!ボタン *基本的にボタンは、「クリック可能」なもの *ボタンは、標準のボタンの規定のルックアンドフィール以外は、BottonBaseのクリックイベント以外に重要な物は追加しません。 *CheckBoxとRadioButtonは、いずれも IsChecked(データモデル)プロパティとIsThreeState(対話モデル)プロパティをサポートするトグルボタンを表す。 *IsThreeStateがTrueの場合、Checked、Unchecked、Indeterminate(IsThreeStateがFalseの場合この状態にはならない)を切り替えることが出来る。 Radio Radio Radio Check Check Check {{ref_image wpf_button.jpg}} !!クラス階層 {{ref_image wpf_button_hierarchy.jpg}} !!!リスト *WPFはテンプレートのサポートが充実しているため、ListBox、ComboBox、DomainUpDown、ラジオボタンリストのような物までが、基本コントロールの上位に異なるテンプレートを適用するだけで実現できる。 *WPFには、ListBox、ComboBox、ListView、TreeViewの4つの基本リストコントロールがある。 !!ソース *すべてのリストコントロールには、2つのソースのいずれかを使用して項目を代入できる。 !Itemsプロパティ *リスト内部のデータ項目リストにデータを追加 var list = new ListBox(); list.Items.Add("a"); list.Items.Add("b"); list.Items.Add("c"); !ItemSourceプロパティ *リストが表示するデータ項目のコレクションをリストコントロールに提供 ""リストコントロールの外部にあるデータを維持できる string[] items = { "1", "2", "3" }; var list = new ListBox(); list.ItemsSource = items; !!ListBoxとComboBox *オブジェクトモデルの観点からいうとこれらはほぼ同一 *ItemSourceプロパティを使用することが推奨され、IEnumerableを実装する任意の型をソースとして使用できる。 *.NET3.0からこれらのシナリオで使用するために特別に設計されたObservableCollectionという新しいコレクションが提供される。 *ObservableCollectionは、リストシナリオのデータソースとして変更追跡のための複数のインターフェースを実装している *まったく新しいテンプレートを記述しなくてもコントロールの外観を調整出来るようになる一連のプロパティを提供。