0

私の質問では、ビューモデル、モデル、およびビュー (MVVM) があると仮定しましょう。ビューモデルには、変更される (そして、それらがバインドされている INotifyPropertyChanged イベントを介してビューを変更する) いくつかのプロパティが含まれています。

ここで、ポリプロパティのようなことをしたいと思います (つまり、いくつかの文字列プロパティをまとめて 1 つのプロパティに入れます)。どうすればこれを適切に行うことができますか?

たとえば、Prop1、Prop2、Prop3 の 3 つのプロパティがあり、これらから 1 つのプロパティを作成したいとしますPropNew = String.Format("{0}, {1} {2}", Prop1, Prop2, Prop3);

ビューモデルに新しいプロパティを作成して (別のプロパティが変更された場合はこれを更新して)、ビューにバインドすることもできます。しかし、これはきれいではないのではないかと心配しています... 他の可能性はありますか?

ありがとう!

4

2 に答える 2

2

質問を正しく理解している場合は、クラスの現在の状態から派生したビュー モデルのプロパティへの UI バインディングを更新する必要があります。

WPF での UI への通知はPropertyChanged、 interface でイベントを発生させることによって行われます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); }
    }
}

FirstNameまたはプロパティのいずれかを更新すると、プロパティが変更されたこと、およびデータを再バインドする必要があることLastNameが UI に通知されます。Greeting

于 2013-08-28T15:16:14.990 に答える