■ VisualBasic+WPF+YAML #11:DataGridのイベント 4

VBからYMALファイルを読み込みたい。
前回記事:VisualBasic+WPF+YAML #8:DataGridのイベント



チェック状態がModelに反映されないのはなぜ?

Viewでチェックした値がModelに反映しない

これは既定値の動作のようで、OneWay という一方通行(ViewModel→View)の動作であった。
これを双方向(VIewModel⇔View)とするには、チェックボックスのBindingに"Mode=TwoWay"を指定する。
■MainWindow.xaml
<DataGridCheckBoxColumn Header="選択" Binding="{Binding checked, Mode=TwoWay}" />

これで、画面でチェックした個数がメッセージボックスに表示される筈であるが・・・
ちょっと動きがおかしい
チェック値を変更したあと、フォーカスを別行に移動させないと正しいチェック数で表示されない。

これは UpdateSourceTriggerプロパティが関係してるようで、既定は "LostFocus"(フォーカスを失うたびにバインドソースを更新) となっている為。
ということで、プロパティ値変更のたびにバインドソースを変更するように"PropertyChanged"を設定する。
■MainWindow.xaml
<DataGridCheckBoxColumn Header="選択" Binding="{Binding checked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

これで即時正しい値で表示されるようになった。



次回記事:

-- 以上 --


VisualBasic, WPF, DataGrid, YAML, MVVM

0 件のコメント:

その他の記事