2010-03-29 41 views
7

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

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

现在,您必须离开单元格才能更新属性。这是一个复选框。它不能在编辑中间像文本框可以...

任何帮助,将不胜感激。

/J

回答

21

你必须设置绑定到的PropertyChanged的UpdateSourceTrigger属性。默认值是LostFocus。

+0

这为我工作。谢谢。 – alimbada 2010-09-27 11:16:01

+0

这也适用于我(WPF4) - 也许这是改变了.NET4 – 2010-12-28 23:10:29

+0

肯定在模板列中工作 – 2011-09-16 03:34:14

9

解决方法是不使用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

+4

不,它不默认。您必须手动设置它,即“UpdateSourceTrigger = PropertyChanged”。否则,您只会在视觉上进行更改(VS2010)。无论如何,非常感谢您的帮助。 – greenoldman 2010-08-05 12:29:50

+0

注意:即使DataGrid中的文本框也需要执行UpdateSourceTrigger。在这种情况下可能需要PropertyChanged = LostFocus(即使这是默认设置) – 2011-11-08 06:40:09

+1

使用Silverlight 5时必须执行此操作 – Aducci 2014-04-15 17:27:18

相关问题