答案 0 :(得分:1)
如果您正在使用某种MVVM模式,那么在您的viewmodel中表示行的数据,您可以执行以下操作:
public const string YearOneByIndexPropertyName = "YearOneByIndex";
public int YearOneByIndex
{
get
{
return _yearOneByIndex;
}
set
{
if (_yearOneByIndex == value)
{
return;
}
_yearOneByIndex = value;
_yearOneByPercentage = 0
RaisePropertyChanged(YearOneByIndexPropertyName);
RaisePropertyChanged(YearOneByPercentagePropertyName);
}
}
public const string YearOneByPercentagePropertyName = "YearOneByPercentage";
public int YearOneByPercentage
{
get
{
return _yearOneByPercentage;
}
set
{
if (_yearOneByPercentage == value)
{
return;
}
_yearOneByPercentage = value;
_yearOneByIndex = 0;
RaisePropertyChanged(YearOneByIndexPropertyName);
RaisePropertyChanged(YearOneByPercentagePropertyName);
}
}
编辑:您还可以添加一些布尔属性来绑定到每列的IsReadOnly属性,并使用相同的技术将备用列的一个设置为true。
编辑:通过一些测试,我发现必须将datagrid列的绑定UpdateSourceTrigger设置为PropertyChanged。否则,在用户按下回车键或选择不同的行之前,上述的setter代码将不会运行。
PS:我正在使用MVVM-Light,这是RaisePropertyChanged的来源。