C# 4.0 关于datagrid中复选框的问题
重复每个C# 4.0 关于datagrid中复选框的问题,c#-4.0,wpfdatagrid,C# 4.0,Wpfdatagrid,重复每个MessageBox.Show(this.myProduct.Radif.ToString()) 发生了什么事 xaml代码: <dg:DataGrid.Columns> <dg:DataGridTextColumn Binding="{Binding IdBook}" Header="IdBook" ></dg:DataGridTextColumn> <dg:DataGridTextColumn
MessageBox.Show(this.myProduct.Radif.ToString())代码>
发生了什么事
xaml代码:
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Binding="{Binding IdBook}" Header="IdBook" ></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding NameBook}" Header="NameBook"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding Author}" Header="Author"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding Price}" Header="Price"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding DateRegister}" Header="DateRegister"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding Description}" Header=Description" Width="*"></dg:DataGridTextColumn>
<dg:DataGridTemplateColumn>
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Selecting, UpdateSourceTrigger=PropertyChanged}" Checked="Checked" Unchecked="UnChecked" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
Checkbox的选中/未选中事件实际上是基本的ToggleButton。开发者社区不鼓励选中/未选中类型及其使用
相反,您可以处理复选框。单击事件并在该处理程序内
if (((CheckBox)sender).IsChecked.GetValueOrDefault(false))
{
//// Your Checked Code Here ...
}
else
{
//// Your unchecked code here ...
}
这些应该避免重复执行检查过的代码
事实上,您可以使用名为Button.click的附加路由事件冒泡,而不是使用多个复选框处理同一个click事件处理程序
句柄按钮。在DataGrid级别单击
<dg:DataGrid Button.Click="CheckBoxClick" ... >
....
让我知道这是否有帮助
<dg:DataGrid Button.Click="CheckBoxClick" ... >
....
<CheckBox IsChecked="{Binding Selecting, UpdateSourceTrigger=PropertyChanged}" x:Name="LocalColumnCheckbox" />
private void CheckBoxClick(object sender, RoutedEventArgs e)
{
var checkBox = e.OriginalSource as CheckBox;
if (checkBox != null && checkBox.Name == "LocalColumnCheckbox")
{
if (checkBox.IsChecked.GetValueOrDefault(false))
{
//// Your Checked Code Here ...
}
else
{
//// Your unchecked code here ...
}
}
}