对于我的问题,我们假设我有一个视图模型,模型和视图(MVVM)。 viewmodel包含一些更改的属性(并通过绑定的INotifyPropertyChanged事件更改视图)。
现在我想做一些像poly-property这样的东西(即把几个字符串属性放在一起并把它放到一个属性中)。我该怎么做呢?
例如,我有三个属性:Prop1,Prop2,Prop3,并希望从这些属性中创建一个属性:PropNew = String.Format("{0}, {1} {2}", Prop1, Prop2, Prop3);
。
一种可能性是在viewmodel中创建一个新属性(如果另一个属性发生更改则更新它),然后绑定到视图。但我担心这不干净......还有其他可能吗?
感谢你!
答案 0 :(得分:2)
如果我正确理解了这个问题,那么您希望将UI绑定更新为视图模型上的属性,该属性是从类的当前状态派生。
通过在界面PropertyChanged
上引发INotifyPropertyChanged
事件来通知WPF中的UI。在下面的代码片段中,我使用的是PRISM库中的NotificationObject
:
public class MyViewModel: NotificationObject
{
private string _lastName;
private string _firstName;
public string FirstName
{
get { return _firstName; }
set
{
_firstName = value;
RaisePropertyChanged(() => Greeting);
}
}
public string LastName
{
get { return _lastName; }
set
{
_lastName = value;
RaisePropertyChanged(() => Greeting);
}
}
public string Greeting
{
get { return string.Format("Hello {0} {1}!", _firstName, _lastName); }
}
}
更新FirstName
或LastName
属性将导致UI通知Greeting
属性已更改,并且数据应该反弹。
答案 1 :(得分:0)
您是否考虑过使用MutiBinding和接口IMultiValueConverter?