チェック状態がModelに反映されないのはなぜ?
Viewでチェックした値がModelに反映しない
これは既定値の動作のようで、OneWay という一方通行(ViewModel→View)の動作であった。
これを双方向(VIewModel⇔View)とするには、チェックボックスのBindingに"Mode=TwoWay"を指定する。
■MainWindow.xaml
これで、画面でチェックした個数がメッセージボックスに表示される筈であるが・・・
ちょっと動きがおかしい
チェック値を変更したあと、フォーカスを別行に移動させないと正しいチェック数で表示されない。
これは UpdateSourceTriggerプロパティが関係してるようで、既定は "LostFocus"(フォーカスを失うたびにバインドソースを更新) となっている為。
ということで、プロパティ値変更のたびにバインドソースを変更するように"PropertyChanged"を設定する。
■MainWindow.xaml
これで即時正しい値で表示されるようになった。
これは既定値の動作のようで、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 件のコメント:
コメントを投稿