c# - 如何使用 IEditableObject 对象在 WPF DataGrid 中执行单击复选框选择

标签 c# wpf mvvm datagrid viewmodel

DataGridCheckBoxColumn 的默认行为是用户必须单击两次才能更改复选框值。在How to perform Single click checkbox selection in WPF DataGrid主题有几个可行的解决方案,但有一个问题 - 你在代码后面有一个 viewmodel 对象,它实现了 IEditableObject 接口(interface),然后是 EndEdit 方法不执行。

知道如何使单击起作用并保留 IEditableObject 功能吗?

最佳答案

您可以处理 DataGridGotFocus 事件并显式进入编辑模式并选中/取消选中 CheckBox:

private void dg_GotFocus(object sender, RoutedEventArgs e)
{
    DataGridCell cell = e.OriginalSource as DataGridCell;
    if (cell != null && cell.Column is DataGridCheckBoxColumn)
    {
        dg.BeginEdit();
        CheckBox chkBox = cell.Content as CheckBox;
        if (chkBox != null)
        {
            chkBox.IsChecked = !chkBox.IsChecked;
        }
    }
}

<DataGrid x:Name="dg" AutoGenerateColumns="False" GotFocus="dg_GotFocus">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Binding="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}" />
        ...

关于c# - 如何使用 IEditableObject 对象在 WPF DataGrid 中执行单击复选框选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42889566/

相关文章:

c# - 如何逐行读取标准输出?

c# - 在 Azure Pipeline 中使用 GlobalSuppressions.cs i StyleCop Runner

WPF 数据网格 : How do I set columns to TextWrap?

c# - 基于RadioButtons的IsChecked启用按钮

listview - 将 View 模型绑定(bind)到 ListView

c# - 支持基本类型和可空类型的两种方式可绑定(bind)条目

silverlight - MVVM light-如何在其他 View 模型中访问属性

c# - 如何通过 NFC 标签启动我的应用程序?

c# - Npgsql 中的 InvalidCastException

wpf - Windows 应用商店应用程序中的 DynamicResource?