4

View モデルから新しいウィンドウを開きたいときはいつでも、通常はメッセンジャーを使用しています。しかし今、私はビューモデルから新しいウィンドウを開き、ビューモデルの呼び出しから呼び出されたビューモデルにオブジェクトを渡したいと思っています。どうすればこれを実装できますか? 私のviewmodelbaseクラスには現在、次のメソッドがあります。

public void SendNotificationMessage(string notification)
        {
            Messenger.Default.Send<NotificationMessage>(new NotificationMessage(notification));
        }

        public void SendNotificationMessageAction(string notification, Action<object> callback)
        {
            var message = new NotificationMessageAction<object>(notification, callback);
            Messenger.Default.Send(message);
        }

私を助けてください

4

1 に答える 1

3

構文は次のようになります。

//Subscribe
Messenger.Default.Register<OpewNewWindowMessage>(OpenNewWindowMethod);

// Broadcast
var message = new OpewNewWindowMessage();
message.ViewModel = this;
Messenger.Default.Send<OpewNewWindowMessage>(message);

// Subscribed method would look like this
void OpenNewWindowMethod(OpewNewWindowMessage e)
{
    // e.ViewModel would contain your ViewModel object
}

上記の例では、という新しいクラスを作成し、OpewNewWindowMessageそれにプロパティをViewModel指定してから、メッセージをブロードキャストする前にその値を設定します。

OpenNewWindowMethod()メッセージを受信しOpewNewWindowMessage.ViewModel、ViewModelプロパティにアクセスするためにアクセスできます

技術的には、1つのプロパティのみを渡す場合はメッセージオブジェクトを作成する必要はありませんが、通常、メッセージオブジェクトを作成する場合は、の<object>ようなジェネリックを使用する代わりに、コードを読みやすく、保守しやすくなります。コード。

于 2013-03-14T13:00:36.970 に答える