[英]WPF Binding to ViewModel and update of view
我想绑定到完整的ViewModel,因为转换器需要使用ViewModel的两个属性来决定其颜色。
{Binding Converter={StaticResource ErrorCountToSignalColorConverter}
这样,转换器就可以获取ViewModel并可以读取两个属性(ErrorCount和HasReceivedData)。 但是,当属性之一更改时,绑定不会更新。 当然,两个属性都有一个OnPropertyChange()引发。
当两个属性之一都更改时,如何实现视图的更新(使用正确的颜色)?
在这种情况下,您需要使用MultiValueConverter选择多重绑定。 它将多个属性( ErrorCount
和HasReceivedData
)绑定到视图,任何属性的任何更改都将反映出来。
您可以使用MultiBinding从视图中传递这两个属性,但是ErrorCount / HasReceivedData / Signal之间的依赖关系会泄漏到UI代码中(并且每次使用时都需要重复)。 视图模型的主要目标之一是允许将视图与此类细节分开。
我建议使用一个枚举来表示可能性集:
public enum SignalLevel {
Low,
Medium,
High
}
然后将电流转换器逻辑应用于这些值而不是颜色,并将其移至视图模型中的单个属性:
public SignalLevel SignalLevel {
get {
// choose a level based on ErrorCount and HasReceivedData
}
}
在视图模型中,每当ErrorCount
或HasReceivedData
更改时, NotifyPropertyChanged
为SignalLevel
引发SignalLevel
。
在视图中,进行从信号电平到颜色的简单转换:
{Binding SignalLevel, Converter={StaticResource SignalToColorConverter}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.