我正在使用并坚持使用 MVVM 模式来处理一些 WPF 问题。
我的大部分属性如下所示:
public string Period
{
get { return _primaryModel.Period; }
set
{
if (_primaryModel.Period != value)
{
_primaryModel.Period = value;
RaisePropertyChanged("Period");
}
}
}
效果很好。
但是我也有一些像这样的属性:
public bool EnableConsignor
{
get
{
return (ConsignorViewModel.Id != 0);
}
}
它没有 setter ,因为 id 会“自动”更改(每次调用 ConsignorViewModel
的保存时。然而,这会导致“系统”不知道的问题当 bool 从 false 变为 true 时(因为没有调用 RaisePropertyChanged
)。
最佳答案
对于这些类型的属性,您只需在相关数据更改时引发 PropertyChanged
。像这样的东西:
public object ConsignorViewModel
{
get { return consignorViewModel; }
set
{
consignorViewModel = value;
RaisePropertyChanged("ConsignorViewModel");
RaisePropertyChanged("EnableConsignor");
}
}
RaisePropertyChanged
可以在任何方法中调用,因此只需将其放在执行任何会更改 EnableConsignor
返回值的操作之后。以上只是一个例子。
关于c# - 没有setter的viewmodel中的WPF mvvm属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29524907/