【问题标题】:WPF datagrid - commit changes in a checkbox column as soon as value is changedWPF datagrid - 值更改后立即在复选框列中提交更改
【发布时间】:2011-09-08 23:38:07
【问题描述】:

我对数据网格有一个小问题。

在我的网格中,我有一个复选框列,它是唯一可编辑的列。

我正在寻找的行为是,只要复选框的状态发生变化,数据网格就会更新我的数据源。因此用户选中/取消选中该框 > 基础数据表得到更新。

当行失去焦点时,默认行为似乎会更新源,要求用户按下某个键或单击其他控件以保存更改。
我该如何改变这种行为?

我没有看到可以执行此操作的数据网格的任何属性,也没有看到 DataGridCheckBoxColumn 的 CheckChanged 事件。

【问题讨论】:

    标签: c# wpf datagrid wpfdatagrid


    【解决方案1】:

    您需要列绑定上的UpdateSourceTrigger 属性。这是一个简单的示例,您可以将其充实并填写空白:

    <DataGrid x:Name="someGrid">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Binding="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" />
        </DataGrid.Columns>
    </DataGrid>
    

    【讨论】:

    • 我已经设置了 UpdateSourceTrigger=PropertyChanged,我在后面的代码中将数据表绑定到网格。这还不够吗?
    • 我尝试为这样的列设置绑定 [Binding="{Binding Path=isfinished, UpdateSourceTrigger=PropertyChanged}" ](isfinished 是我的数据表中的一列),但行为相同。跨度>
    • 是的,我做了一些测试。似乎问题在于数据网格本身,而不是绑定。在单元格失去焦点之前,它不会“结束”编辑模式。
    【解决方案2】:

    DataGrid 本身将所有列(除了模板列)的 UpdateSourceTrigger 设置为 LostFocus 并且不能被覆盖。因此需要使用带有复选框模板的模板列。

    编辑:这只是围绕 DataGrid 列的一长串愚蠢陷阱中的一个。更多概述here

    【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多