Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 关于datagrid中复选框的问题_C# 4.0_Wpfdatagrid - Fatal编程技术网

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 ...
                    }
            }
    }