从datagrid获取复选框的值?

时间:2011-06-10 20:46:01

标签: c# wpf xaml datagrid checkbox

<DataGridTemplateColumn Header="IsAdmin">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox Name="IsAdminCheckBox" IsChecked="{Binding Path=IsAdmin}" Click="IsAdmin_Click" CommandParameter="{Binding Path=Id}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

这是我程序中数据网格的代码。在CS文件中,在click事件中,我想查看当它们检查它时,它是否已更改为已选中或未选中,以便我可以在数据库中处理,将用户从admin更改为不是admin,反之亦然。但是,只是调用IsAdminCheckBox不起作用,因为它找不到它,并且调用datagridName.IsAdminCheckBox也不起作用。有谁知道如何访问复选框的状态?

1 个答案:

答案 0 :(得分:2)

您无法以这种方式访问​​此复选框,因为可能存在多个复选框,该名称仅在DataTemplate内有效。

在事件处理程序中,sender参数应该是CheckBox,您只需要将其强制转换,然后就可以访问IsChecked属性。另一种选择是处理CheckedUncheked事件。

但我认为更好的方法是在绑定类中处理它,而不是在GUI的代码隐藏,关注点分离等等。