DataGridCheckBoxColumn 立即绑定

Posted

技术标签:

【中文标题】DataGridCheckBoxColumn 立即绑定【英文标题】:DataGridCheckBoxColumn immediate binding 【发布时间】:2011-02-02 00:00:16 【问题描述】:

我正在使用 WPF Toolkit Datagrid,并且有一列是绑定到我的 ViewModel 上的 bool 属性的 DataGridCheckBoxColumn。

我的问题是,当用户选中或取消选中复选框时,我不希望该属性立即更新其值。

现在您必须离开单元格才能更新属性。这是一个复选框。它不能像文本框那样处于编辑过程中。

【问题讨论】:

【参考方案1】:

您必须将 Binding 的 UpdateSourceTrigger 属性设置为 PropertyChanged。默认为 LostFocus。

【讨论】:

这也适用于我 (WPF4) - 也许这对于 .NET4 有所改变 对我来说不是。 (WPF4)【参考方案2】:

解决方案是不要为此使用 DataGridCheckBoxColumn。而是使用

<dg:DataGridTemplateColumn Width="20" Header="" SortMemberPath="IsSelected">
   <dg:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
         <CheckBox  IsChecked="Binding Path=IsSelected" />
       </DataTemplate>
   </dg:DataGridTemplateColumn.CellTemplate>
 </dg:DataGridTemplateColumn>

默认将其 UpdateSourcerigger 设置为 PropertyChanged...

DataGridCheckBoxColumn 的 UpdateSourceTrigger 设置为 Explicit,并且无法更改。 在这里阅读更多:http://blogs.msdn.com/vinsibal/archive/2009/04/07/5-random-gotchas-with-the-wpf-datagrid.aspx

【讨论】:

不,它不是默认的。您必须手动设置它,即“UpdateSourceTrigger=PropertyChanged”。否则,您将仅在视觉上进行更改(VS2010)。无论如何,非常感谢您的帮助。 注意:即使是 DataGrid 中的文本框,您也需要执行 UpdateSourceTrigger。在这种情况下可能需要 PropertyChanged=LostFocus(即使这是默认设置) 我在使用 Silverlight 5 时必须这样做【参考方案3】:

另一种方法:

http://wpf.codeplex.com/wikipage?title=Single-Click%20Editing&ProjectName=wpf

【讨论】:

以上是关于DataGridCheckBoxColumn 立即绑定的主要内容,如果未能解决你的问题,请参考以下文章

WPF 将 DataGridCheckBoxColumn 更改为红点

Wpf DataGridCheckBoxColumn 问题

wpf datagridcheckboxcolumn:如何启用/禁用复选框

DataGridCheckboxColumn 双向绑定

WPF DataGridCheckBoxColumn 绑定值后不能选中以及 能选中后,不能进行属性通知

如何在不需要额外点击的情况下使 DataGridCheckBoxColumn 可编辑?