我怎样(干净地)将组合属性绑定到视图(MVM)?

时间:2013-08-28 04:47:25

标签: c# data-binding mvvm properties windows-phone

对于我的问题,我们假设我有一个视图模型,模型和视图(MVVM)。 viewmodel包含一些更改的属性(并通过绑定的INotifyPropertyChanged事件更改视图)。

现在我想做一些像poly-property这样的东西(即把几个字符串属性放在一起并把它放到一个属性中)。我该怎么做呢?

例如,我有三个属性:Prop1,Prop2,Prop3,并希望从这些属性中创建一个属性:PropNew = String.Format("{0}, {1} {2}", Prop1, Prop2, Prop3);

一种可能性是在viewmodel中创建一个新属性(如果另一个属性发生更改则更新它),然后绑定到视图。但我担心这不干净......还有其他可能吗?

感谢你!

2 个答案:

答案 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); }
    }
}

更新FirstNameLastName属性将导致UI通知Greeting属性已更改,并且数据应该反弹。

答案 1 :(得分:0)

您是否考虑过使用MutiBinding和接口IMultiValueConverter?