DataGrid CheckboxColumn绑定到VM属性而不调用setter

时间:2013-03-21 18:08:29

标签: c# wpf mvvm

ETA:我正在使用Caliburn.Micro,因此Grid的x:Name属性绑定到名为MyData的VM上的属性,而该属性又具有属性IsTrue。 MyData继承自PropertyChangeBase

我有一个DataGrid,其中一列绑定到ViewModel上的bool属性:

<DataGrid x:Name="MyData"
                  AutoGenerateColumns="False"
                      Width="282"
                      RowHeaderWidth="0"
                      CanUserAddRows="false">
  <DataGrid.Columns>
     <DataGridCheckBoxColumn Header="MyChckColumn"
                     Binding="{Binding IsTrue, Mode=TwoWay}"
                     Width="80"/>
   </DataGrid.Columns>
</DataGrid>

当网格上的其他内容被选中时,它只会进入设置器,但是当我实际检查一个空的框时,它不会进入设置器。

  public bool IsTrue
  {
     get
     {
        return _isTrue;
     }
     set
     {
        if (value.Equals(_isTrue)) return;
        _isTrue= value;
        NotifyOfPropertyChange(() => IsTrue);
     }
  }

我需要调用一些验证方法,还是需要设置的触发器?

1 个答案:

答案 0 :(得分:1)

要获得您所追求的行为,您必须将绑定的UpdateSourceTrigger属性设置为PropertyChanged

默认情况下,当单元格失去焦点时,会更新绑定源。

Binding="{Binding IsTrue, UpdateSourceTrigger=PropertyChanged}"