0

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

现在我想做一些类似于多属性的事情(即把几个字符串属性放在一起并将其放入一个属性中)。我怎样才能正确地做到这一点?

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

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

谢谢你!

4

2 回答 2

2

如果我正确理解了这个问题,那么您希望将 UI 绑定更新为从类的当前状态派生的视图模型上的属性。

在 WPF 中通知 UI 是通过PropertyChanged在界面上引发事件来完成的INotifyPropertyChanged。在下面的代码片段中,我使用的NotificationObject是 PRISM 库中的:

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属性已更改,并且应该重新绑定数据。

于 2013-08-28T15:16:14.990 回答
0

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

于 2013-08-28T04:55:55.123 回答