DataGrid CheckboxColumn绑定到VM属性未调用setter

本文关键字:调用 setter 属性 VM CheckboxColumn 绑定 DataGrid | 更新日期: 2023-09-27 18:05:04

ETA:我用的是Caliburn。因此,网格的x:Name属性被绑定到虚拟机上名为MyData的属性上,该属性又具有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>

只有当网格上的其他元素被选中时,它才会进入setter,但当我选中了一个空框时,它就不会进入setter。

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

是否需要调用一些验证方法,或者需要设置一个触发器?

DataGrid CheckboxColumn绑定到VM属性未调用setter

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

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

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