WPFデータGridバックグラウンドインタフェースを使用してフロントを更新しない問題を修正
1340 ワード
バックグラウンドでフロントを変更しても更新できない理由:
1.フロントページにBindingと書かれていない
2.バックグラウンドデータ定義のフィールドにgetとsetがない
3.データコンテナにObservableCollectionが使用されていない
4.フィールド内容変更時にデータソースをリセットしない
まず、インタフェースコードを簡単に例に挙げます.
DataGridにItemsSource="{Binding}"を設定する必要があります.
フィールド設定はBinding="{Binding Name}"と書く必要があります.
対応データは次のとおりです.
public class DataItem { public string Name { get; set; } }
フィールド名はページと一致する必要があります.フィールドはgetとsetを含む属性でなければなりません.
メンバー変数の定義:
ObservableCollection m_data = new ObservableCollection();
フロント・バックグラウンド・データの関連付け:
DG.ItemsSource = m_data;
ObservableCollectionコンテナの使い方はリストに似ています.これは、要素を追加、削除(つまりCountが変化する)したときに通知することができます.
バックグラウンドにデータを追加しました:DataItem cm=new DataItem() cm.Name = "AA"; m_data.Add(cm);インタフェースが変わります
バックグラウンドでのデータの削除:m_data_data.RemoveAt(0);インタフェースも変わります
しかし、データを変更しました:m_data[0].Name = "MM";このとき界面は変化しない(Countは変化していないため...)
だからこの時DG.ItemsSource = null; DG.ItemsSource = m_data; インタフェースが変わる
1.フロントページにBindingと書かれていない
2.バックグラウンドデータ定義のフィールドにgetとsetがない
3.データコンテナにObservableCollectionが使用されていない
4.フィールド内容変更時にデータソースをリセットしない
まず、インタフェースコードを簡単に例に挙げます.
DataGridにItemsSource="{Binding}"を設定する必要があります.
フィールド設定はBinding="{Binding Name}"と書く必要があります.
対応データは次のとおりです.
public class DataItem { public string Name { get; set; } }
フィールド名はページと一致する必要があります.フィールドはgetとsetを含む属性でなければなりません.
メンバー変数の定義:
ObservableCollection m_data = new ObservableCollection();
フロント・バックグラウンド・データの関連付け:
DG.ItemsSource = m_data;
ObservableCollectionコンテナの使い方はリストに似ています.これは、要素を追加、削除(つまりCountが変化する)したときに通知することができます.
バックグラウンドにデータを追加しました:DataItem cm=new DataItem() cm.Name = "AA"; m_data.Add(cm);インタフェースが変わります
バックグラウンドでのデータの削除:m_data_data.RemoveAt(0);インタフェースも変わります
しかし、データを変更しました:m_data[0].Name = "MM";このとき界面は変化しない(Countは変化していないため...)
だからこの時DG.ItemsSource = null; DG.ItemsSource = m_data; インタフェースが変わる