I bind a list<> to a datagrid. Then, in the code behind, I change the value in the list<>. How can I display the change in the datagrid?
Xaml code:
<DataGrid Name="gridTest" Grid.RowSpan="1" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Enable" Width="SizeToHeader" IsReadOnly="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=isEnable, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=test_name, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="test_name" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=test_type, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="test_type" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=test_temp_index, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="test_temp_index" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=lower_limit, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="lower_limit" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=upper_limit, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="upper_limit" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=board_test_point_description, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="board_test_point_description" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=test_point_sequence, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="test_point_sequence" Width="SizeToHeader" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=fixture_test_point, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="fixture_test_point" Width="SizeToHeader" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
Code Behind:
list:
public class fct_board_testpoint
{
#region define Property
public int profile_id { get; set; }
public int test_point_sequence { get; set; }
public int fixture_test_point { get; set; }
public string test_type { get; set; }
public float upper_limit { get; set; }
public float lower_limit { get; set; }
public string test_name { get; set; }
public string board_test_point_description { get; set; }
public int test_temp_index { get; set; }
public bool isEnable { get; set; } //not in profile only for testing
#endregion
}
Binding:
this.gridTest.ItemsSource = UIBase.listTestPoint;
Change binding source value:
foreach (fct_board_testpoint tp in UIBase.listTestPoint)
{
tp.board_test_point_description = "Success";
tp.isEnable = true;
}
The class fct_board_testpoint has to implement INotifyPropertyChanged, this interface holds an event that you raise each time a property has changed.