MVVM を使用して WPF アプリケーションを作成しています。私は自分のアイテムの ObservableCollection を持っています:
public ObservableCollection<VarValue> Values;
public class VarValue: INotifyPropertyChanging, INotifyPropertyChanged
{
public double value
{
get
{
return this._value;
}
set
{
if (this._value != value)
{
this.OnvalueChanging(value);
this.SendPropertyChanging();
this._value = value;
this.SendPropertyChanged("value");
this.OnvalueChanged();
}
}
}
}
これは dataGrid1 にバインドされています。
dataGrid1.ItemsSource = Values;
<DataGrid EnableColumnVirtualization="true" EnableRowVirtualization="true" Name="dataGrid1" DockPanel.Dock="Top" AutoGenerateColumns="False" Height="120" Width="Auto" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False" SelectionUnit="Cell">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate><TextBlock Text='{Binding Values.value}'/></DataTemplate></DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate><TextBox Text='{Binding Values.value, Mode=TwoWay}'/></DataTemplate></DataGridTemplateColumn.CellEditingTemplate>
</DataGrid>
ユーザーが dataGrid1 セルを編集するとき、新しい VarValue オブジェクトを作成し、それを既存のコレクションに挿入する必要があります。例えば:
- データグリッドには、値が 1 のセルが 1 つ含まれています
- ユーザーはそれを value=2 に変更します
- 現在、テーブルには 2 つのセルが必要です: 1 と 2 の値があります。
どうすればそれを達成できますか?