GridViewのデータバインディングが反映されない
ご教授よろしくお願いします。
WPFのDataGridにObservableCollectionのインスタンスをバインドしております。
DataGrdiの値を変更したら、他の列の情報を自動で更新したいのですが、画面に反映されません。。(実際のインスタンスの値は変わっている)
自動で画面更新されない理由と、更新する方法をご教授ください。
xamlファイルは以下の通りです。
<DataGrid Name="gridTest" ItemsSource="{Binding}" AutoGenerateColumns="False" Margin="10" >
<DataGrid.Columns>
<DataGridTextColumn Header="Value1" Binding="{Binding Value1}" />
<DataGridTextColumn Header="Value2" Binding="{Binding Value2}" />
<DataGridTextColumn Header="Value3" Binding="{Binding Value3}"/>
</DataGrid.Columns>
</DataGrid>
コードビハインドは以下の通りです。
public MainWindow()
{
InitializeComponent();
ObservableCollection<Item> ItemList = new ObservableCollection<Item>();
ItemList.Add(new Item() { Value1 = 1, Value2 = 4 });
ItemList.Add(new Item() { Value1 = 2, Value2 = 4 });
ItemList.Add(new Item() { Value1 = 3, Value2 = 6 });
this.gridTest.DataContext = ItemList;
}
public class Item
{
int _value1;
int _value2;
int _value3;
public int Value1
{
get
{
return _value1;
}
set
{
_value1 = value;
}
}
public int Value2
{
get
{
return _value2;
}
set
{
_value2 = value;
}
}
public int Value3
{
get
{
_value3 = _value1 + _value2;
return _value3;
}
set
{
_value3 = value;
}
}
}
ItemクラスのValue3はValue1+Value2を常に取得する想定です。
この時、画面上でGridViewのValue1を値変更してもValue3の値が更新されません。
ただし、バインディングされているインスタンスのValue3はValue1 + Value2になっています。
試しにValue3のセルをダブルクリックして編集モードになると、Value1+Value2の値になります。
以下はその様子のサンプル画像です。
1行目ののValue1を1から10に変更した時にValue3が変わっていません。
ただし、Value3のセルをダブルクリックすると
のように変わります。。。
どなたか解決方法を教えてください。