最終更新:ID:bDKEfI3r0w 2011年02月24日(木) 12:12:10履歴
作成中
ただし、BindingGroupを用いることで任意のタイミングで一気に反映させることが可能
バインディングは2つのデータ(=クラスのプロパティ)を同期させる仕組み。
たとえば、データベースの値(を表すプロパティ)と、
画面上のテキストを同期させる。
必ずしも瞬時に同期されるわけではなく、
たとえば、一連の値を画面に入力させて、
OKを押したときに入力データを検証して大丈夫だったらデータベースの値に反映する。
たとえば、データベースの値(を表すプロパティ)と、
画面上のテキストを同期させる。
必ずしも瞬時に同期されるわけではなく、
たとえば、一連の値を画面に入力させて、
OKを押したときに入力データを検証して大丈夫だったらデータベースの値に反映する。
- 反映されるタイミングはデフォルトで決まっている(カスタマイズ可能)
ただし、BindingGroupを用いることで任意のタイミングで一気に反映させることが可能
- もっとも基本的な方法で以下のように省略してかける
{Binding Path=プロパティ名}
- ItemsControl(リストなど)が絡むとDataContextが自動的にかわることに注意すれば難しくないだろう
<TextBlock Foreground="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=Foreground}"
- WindowにName属性を指定しておく
- バインディングを以下のように書く
{Binding ElementName=Windowに付けたName属性, Path=プロパティ名}
- WindowじゃなくてButtonのプロパティなどの場合も同じ
- WindowまたはUserControlにxmlnsを設定する
xmlns:media="clr-namespace:System.Windows.Media;assembly=PresentationCore"
- Bindingはx:Staticを使う
{Binding Source={x:Static media:Fonts.SystemFontFamilies}}
Command="{Binding Source={x:Static vm:CommonCommands.Singleton}, Path=ShowXXXCommand}"※上記はシステムフォントのリストをXAMLでバインディングするように指定する例
Triggerにからむと混乱するので、まとめた記事を一応リンク貼っておきます
リンク
リンク
コメントをかく