C# 如何(干净地)将组合属性绑定到视图(MVM)?

C# 如何(干净地)将组合属性绑定到视图(MVM)?,c#,data-binding,mvvm,properties,windows-phone,C#,Data Binding,Mvvm,Properties,Windows Phone,对于我的问题,假设我有一个viewmodel、model和view(MVVM)。viewmodel包含两个更改的属性(并通过绑定它们的INotifyPropertyChanged事件更改视图) 现在我想做一些类似于poly属性的事情(即,将两个字符串属性组合在一起并将其放入一个属性中)。我怎样才能正确地做到这一点 例如,我有三个属性:Prop1、Prop2、Prop3,并希望从中生成一个属性:PropNew=String.Format(“{0}、{1}{2}”、Prop1、Prop2、Prop3

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

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

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

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


谢谢大家!

您是否考虑过使用multibinding和interface IMultiValueConverter?

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

通过在接口
INotifyPropertyChanged
上引发
PropertyChanged
事件来通知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
属性将导致用户界面收到通知,提示
问候语
属性已更改,数据应恢复。

我不完全理解您的术语(例如poly属性)。也许您可以提供一些示例代码来演示您正在尝试实现的目标。谢谢,我添加了一个示例。谢谢。我是在没有Prism的情况下完成的(虽然在Windows Phone中也可以实现)。。。