C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DataGridのセル内容変更時のItemsSource更新


(過去ログ 135 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■79579 / inTopicNo.1)  DataGridのセル内容変更時のItemsSource更新
  
□投稿者/ angra (5回)-(2016/04/15(Fri) 17:49:07)

分類:[.NET 全般] 

C#、VS2013です。

mvvmで作っている時、VMで
DataGridのItemsSourceの更新を捉えることは可能でしょうか。
ItemsSourceはObservableCollection<CLASS>です。

実現したいことは、
VMでDataGridのItemsSource更新時の処理を行うことです。


DataGridにはTextBlockとCheckBoxをおいています。

ItemsSourceのセッターでPropertyChangedイベントを
発生させようと思ったのですが、ブレーク設定しても
セッターに来ませんでした。

DevExpressのEventToCommand機能も試みたのですが、
コマンド発生がItemsSourceの更新より早かったため、
期待の動作をしませんでした。
この時変換したイベントはCellEditEndingです。

可能であれば、
ItemsSource更新タイミングで
PropertyChangedイベントを発生させたいです。

よろしくお願いいたします。
引用返信 編集キー/
■79581 / inTopicNo.2)  Re[1]: DataGridのセル内容変更時のItemsSource更新
□投稿者/ Hongliang (427回)-(2016/04/15(Fri) 19:43:42)
普通に考えると、VMがCLASS::PropertyChangedを拾う形になるんじゃないでしょうか。
class VM {
    public ObservableCollection<CLASS> Items { get; private set; }
    public VM() {
        Items = new ObservableCollection<CLASS>();
        Items.CollectionChanged += this.OnItemsChanged;
    }
    private void OnItemsChanged(object sender, NotifyPCollecctionChangedEventArgs e) {
        if (e.OldItems != null) {
            foreach (CLASS item in e.OldItems) {
                item.PropertyChanged -= this.OnItemChanged;
            }
        }
        if (e.NewItems != null) {
            foreach (CLASS item in e.NewItems) {
                item.PropertyChanged += this.OnItemChanged;
            }
        }
    }
    private void OnItemChanged(object sender, PropertyChangedEventArgs e) {
        CLASS item = (CLASS)sender;
        // todo
    }
}

引用返信 編集キー/
■79628 / inTopicNo.3)  Re[2]: DataGridのセル内容変更時のItemsSource更新
□投稿者/ angra (6回)-(2016/04/22(Fri) 11:05:00)
回答ありがとうございます。

Items.CollectionChangedが走らず、
うまく動作しませんでした。
他の基本的な設定ができていないのかもしれません。

CellEditEndingではなく、
SellectionChangedとEnterのKeyUp時にコマンドを
飛ばすことで近い動作を得られたので
ひとまず諦めます。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -