none
DataGridのCheckBoxColumnのチェック状態をフォーカスから外れる前に取得したい RRS feed

  • 質問

  • 初めてお世話になります。
    DataGridにDataGridCheckBoxColumnの列を用意しています。
    これとは別に、全行のチェックボックスを操作するチェックボックス(ここでは全行チェックボックスと呼ぶことにします)を別に用意して
    全行チェックなどを行うUIを作ろうとしています。

    全行チェック、全行アンチェックならばCheckedやUncheckedイベントで実現できますが
    DataGrid側のチェック状態と連動して、全行チェックボックスのIsCheckedをnullにするなどの処理が必要です。
    DataGrid側のチェック状態は、行からフォーカスが外れたときにEditEndとなり
    バインディング元のオブジェクトの値が変更されますが、求める動作は
    DataGridのチェックボックスの値が変更されたら、即座にバインディング元に通知して欲しいのです。

    このような場合に、どのようなイベントを用いればよいのかなどの情報をお聞きしたいです。
    文章での説明だけでは分かりにくいので、テストプロジェクトを用意したのでお手数ですが見ていただけると幸いです。
    http://coelacanth.axfc.net/uploader/Sc/upload.cgi?s=379761740
    (このプロジェクトの画面下部にある[全て]チェックボックスの動きをDataGridのチェック状態と連動させたいのです)

    • 移動 山本春海 2012年4月2日 0:25 よ (移動元:Windows Presentation Foundation(WPF): よくある質問)
    2011年12月16日 8:39

回答

  • バインディング元のオブジェクトの値が変更されますが、求める動作は
    DataGridのチェックボックスの値が変更されたら、即座にバインディング元に通知して欲しいのです。

    ここだけ読むとUpdateSourceTriggerをPropertyChangedにすれば良いだけだと思いますが、これで良いでしょうか?

    Binding="{Binding IsCheck, UpdateSourceTrigger=PropertyChanged}"

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク _Matsu 2011年12月16日 10:06
    2011年12月16日 9:23
    モデレータ

すべての返信

  • バインディング元のオブジェクトの値が変更されますが、求める動作は
    DataGridのチェックボックスの値が変更されたら、即座にバインディング元に通知して欲しいのです。

    ここだけ読むとUpdateSourceTriggerをPropertyChangedにすれば良いだけだと思いますが、これで良いでしょうか?

    Binding="{Binding IsCheck, UpdateSourceTrigger=PropertyChanged}"

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク _Matsu 2011年12月16日 10:06
    2011年12月16日 9:23
    モデレータ
  • ご指摘の内容で目的通りの動作になりました。
    UpdateSourceTriggerの規定値がLostFocusなのですね。
    このプロパティの存在自体を把握していませんでした。

    trapemiyaさんどうもありがとうございました。

    2011年12月16日 10:09