2010-03-29 39 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

相關問題