Wpf 从视图模型中的属性设置器触发计算是否不正确?
假设我有一个视图模型,它在实现Wpf 从视图模型中的属性设置器触发计算是否不正确?,wpf,mvvm,Wpf,Mvvm,假设我有一个视图模型,它在实现INotifyPropertyChanged的视图模型中具有价格和数量属性,该视图模型绑定到文本框,总成本属性绑定到文本块。更新价格或数量时,应重新计算总成本 我理解,尽量减少在属性setter和getter内部完成的工作量是可取的。从属性设置器触发计算是否是一种不良做法?如果这是不好的做法,我还应该怎么做?我可以看到两种可能性 订阅PropertyChanged事件并从那里触发计算。我觉得这个事件更多的是供外部观察者使用,而不是在视图模型本身中使用,而且在任何情况
INotifyPropertyChanged
的视图模型中具有价格和数量属性,该视图模型绑定到文本框,总成本属性绑定到文本块。更新价格或数量时,应重新计算总成本
我理解,尽量减少在属性setter和getter内部完成的工作量是可取的。从属性设置器触发计算是否是一种不良做法?如果这是不好的做法,我还应该怎么做?我可以看到两种可能性
我担心这可能是一个主要基于意见的问题,无论如何,我想分享我的想法 我认为在属性设置器中触发计算不会有太多问题。也许你怎么做很重要。IHMO在代码中的任何地方复制
OnPropertyChanged(“CalculatedPropertyName”)
都是不好的
我更喜欢这样的:
public int Quantity
{
get { return quantity; }
set
{
if (value != quantity)
{
quantity = value;
OnPropertyChanged();
Result = Quantity * Price;
}
}
}
public int Price
{
get { return price; }
set
{
if (value != price)
{
price = value;
OnPropertyChanged();
Result = Quanity * Price;
}
}
}
public int Result
{
get { return result; }
private set
{
if (value != result)
{
result = value;
OnPropertyChanged();
}
}
}
这样,您只需使用一个私人setter,无需记住提出任何问题。这是我喜欢的方式,但是如果你正在寻找更复杂的方式,你可以找到很多想法和方法
最后一件事——但并非最不重要——我不喜欢你建议的其他方式,我觉得它们太扭曲了