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);
}
}
是否需要调用一些验证方法,或者需要设置一个触发器?
要获得您想要的行为,您必须将绑定的UpdateSourceTrigger
属性设置为PropertyChanged
。
默认情况下,当单元格失去焦点时,将更新绑定源。
Binding="{Binding IsTrue, UpdateSourceTrigger=PropertyChanged}"