创建datatable的一个实例dt,表中有一列是bool类型,绑定为DataGridBoolColumn。
希望在DataGrid中点击DataGridBoolColumn中的CheckBox直接修改DataTable中对应的值。
xaml:
1 <DataGrid Name="list" Margin="268,0,0,12" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="Black" FontSize="10.667"
2 Height="125.923" VerticalAlignment="Bottom"
3 FontFamily="Microsoft YaHei" CanUserAddRows="True" CanUserDeleteRows="False" IsReadOnly="True"
4 CanUserReorderColumns="True" CanUserResizeColumns="True" AutoGenerateColumns="True" HorizontalAlignment="Left" Width="64">
5 <DataGrid.Columns>
6 <DataGridTemplateColumn Header="是否继续">
7 <DataGridTemplateColumn.CellTemplate>
8 <DataTemplate>
9 <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=Temporary,Mode=TwoWay}"></CheckBox>
10 </DataTemplate>
11 </DataGridTemplateColumn.CellTemplate>
12 </DataGridTemplateColumn>
13 </DataGrid.Columns>
14 </DataGrid>
后台:
DataTable dt;
public MainWindow()
{
InitializeComponent();
dt = new DataTable();
DataColumn d1 = new DataColumn("Temporary", typeof(bool));
dt.Columns.Add(d1);
list.ItemsSource = dt.DefaultView;
}
有一个按钮实现动态添加数据:
private void button3_Click(object sender, RoutedEventArgs e)
{
DataRow dr = dt.NewRow();
bool b=false;
dr["Temporary"] = b;
dt.Rows.Add(dr);
}
运行后在界面上修改checkbox的值,再利用代码将dt中的数据显示出来查看值是否改变。结果值为其加入dt时的值,并没有改正。请问各位高手问题出在哪里呢?谢谢!
你的这个 <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=Temporary,Mode=TwoWay}"></CheckBox>应该有一个点击的事件啊。
可以有啊。但是我觉得和这个事件没有关系。是datagrid和datatable之间绑定的问题。我的理解对吗?
@答应不爱你: 你先要找到你要修改的那一行的row的值,再找到点击对应CheckBox这一列的值。把你要修改的值赋给它就是的了。
@Wellbeing: 谢谢你,问题解决了!