C# WPF DataGrid下面 使用CheckBox 选中事件

xaml文件中

第一种方式:在对应的cs中实现

<Grid>

<DataGrid Name="DG1"  Grid.Row="5"  Grid.ColumnSpan="4" ItemsSource="{Binding MyList,Mode=TwoWay}" AutoGenerateColumns="False" >

 <DataGrid.Columns>
                                <DataGridTextColumn Width="550" Header="测试1"  IsReadOnly="True" Binding="{Binding ShowName}" />
                                <DataGridTextColumn Width="250" Header="测试2"  IsReadOnly="True" Binding="{Binding FunctionName}"/>

<!--这里是具体使用Chekbox-->
                                <DataGridTemplateColumn Header="CheckBox测试 Width="*">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>

<!--Binding isEnable是类中的属性叫做isEnable 自己可以随便定义即可(定义Bool类型)-->
                                            <CheckBox HorizontalAlignment="Center" Click="CheckBox_Click" IsChecked="{Binding IsEnable}"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>

                                <DataGridTextColumn Width="250" IsReadOnly="true" CellStyle="{StaticResource NoBoundaryDataGridCell}" Header="其他测试"  Binding="{Binding ExpiryDate,Mode=TwoWay}"/>
                            </DataGrid.Columns>

<DataGrid>

对应的CS文件中事件


        private void CheckBox_Click(object sender, RoutedEventArgs e)
        {
            CheckBox checkBox = sender as CheckBox;
            if (checkBox != null)
            {
                var cntr = DG1.ItemContainerGenerator.ContainerFromIndex(DG1.SelectedIndex); //这里是拿到所选中行
                FunctionItem selectItem = (FunctionItem)(cntr as DataGridRow).DataContext; //这里是把选中行转换为对象,进而拿到CheckBox中绑定的名字
             
                foreach (var vItem in MyList)
                {

selectItem.isEnable = false; .//这里是拿到MyList类中的isEnable属性 即上面 xmal中 Checkbox中绑定的变量

                    }


     
            }
        }

第二种实现:MVVM结构

<Da​​taGridTemplateColumn.HeaderTemplate>
     <DataTemplate>
         <CheckBox IsChecked= "True"Horizo​​ntalAlignment = "Center"
                       Command= "{Binding Path=DataContext.CheckAllCommand,
                       RelativeSource={RelativeSource AncestorType=DataGrid}}"
                       CommandParameter= "{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" />
     </DataTemplate>
 </DataGridTemplateColumn.HeaderTemplate>

在VM中实现 DataContext.CheckAllCommand方法即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值