WPFで,あるデータの値によって画面の見た目を変化させたいときなんかに使えるDataTrigger。
これは,TriggerやEventTriggerのような使い方をするとビルドが通らないことがある。例えば次のような場合だ。
誤った使い方の例
この例では,TestFlagというViewModelのプロパティの値がTrueのときにTextBoxのテキストを「バナナ」に変えようとしているが,ビルドしようとすると次のようなエラーに見舞われる。
実はDataTriggerはコントロールのTriggersプロパティに直接指定できるものではなく,StyleのTriggersプロパティで使わないとこのようなエラーとなる。
例えば,次のような使い方ならビルドが通る。
正しい使い方の例
TextBoxのTextプロパティの扱いに注意。
TextBoxタグに直接Textプロパティを指定すると,DataTriggerによる値の切替が効かなくなる。ずっと「りんご」のままになってしまう。
この例では,Style内のSetterタグでTextプロパティの既定の値として「りんご」を設定しておき,DataTriggerでTestFlagの値に応じて「バナナ」に切り替えるようにしている。