|  | 分類:[C#]
 
 2013/03/12(Tue) 13:56:24 編集(投稿者)
 2013/03/12(Tue) 13:56:06 編集(投稿者)
 
 言語: VisualStudio2010 C# WPF
 
 DataGridのセルの編集で困っています。少しわかりづらいかも知れませんがお願いします。
 
 編集モードで選択したセルのデータが他のセルの編集モードに切り替わったときに表示されてしまい、そのセルのもともとあったデータが上書き表示されてしまいます。
 例としては、
 初期状態:セルA{ コンボA(DataA選択中)、コンボB(DataB選択中)}
 セルB{ コンボA(DataA選択中)、コンボB(DataB選択中)}
 セルAを{コンボA(DataC選択中)、コンボB(DataD選択中)}に変更し編集モードを抜ける。
 するとセルBで編集モードに入るときセルBの初期状態データが
 セルB{ コンボA(DataC選択中)、コンボB(DataD選択中)}というように表示されてしまう。
 
 なぜこのようになるのかがわかりません。
 
 コードは以下のような感じです。
 
 DataGridTemplateColumn.CellTemplateでTextBlockを二つ、
 DataGridTemplateColumn.CellEditingTemplateでComboBoxを二つ縦に並べます。
 
 ItemsSource="{Binding ListA}"、SelectedValue="{Binding ValA_1}",
 ItemsSource="{Binding ListB}"、SelectedValue="{Binding ValB_1}"をバインドし、
 DisplayMemberPath、SelectedValuePathを設定しました。
 
 同じ列を
 ItemsSource="{Binding ListA}"、SelectedValue="{Binding ValA_2}"
 ItemsSource="{Binding ListB}"、SelectedValue="{Binding ValB_2}" …… のように5列つくり
 
 DataGridのItemsSource="{Binding list_Data}"をバインドしました。
 
 list_Dataのなかは以下のような感じです。
 List<ClassA> list_Data{get;set;}
 public class ClassA : INotifyPropertyChanged
 {
 public IList ListA{ get; set; }
 public IList ListB{ get; set; }
 
 private string _ValA_1;
 private string _ValB_1;
 private string _ValA_2;
 private string _ValB_2;
 …
 
 public string ValA_1
 {
 get { return _ValA_1; }
 set
 {
 _ValA_1 = value;
 NotifyPropertyChanged("ValA_1");
 }
 }
 …
 }
 
 |