【MVVM】ViewModel から View へメッセージを送信するには

◆ 事前準備

★MVVM Light Toolkitを使用する
・NuGet
  http://nuget.org/List/Packages/MvvmLight
・インストーラー
  http://mvvmlight.codeplex.com/

◆ Messenger

using GalaSoft.MvvmLight.Messaging;

namespace Common.MvvmLight
{
    public static class MessengeInstance
    {
        private static Messenger _messenger = new Messenger();

        public static Messenger Messenger
        {
            get { return _messenger; }
        }
    }
}

◆ ViewModel(メッセージ送信)

using GalaSoft.MvvmLight.Messaging;
using Common.MvvmLight;

namespace ViewModels
{
    public class TestViewModel
    {
        // --省略--

        // メッセージを送信
        private void SendMessage()
        {
            // NotificationMessageで String型のメッセージを送信
            MessengeInstance.Messenger.Send<NotificationMessage>
                (new NotificationMessage("NotificationMessage"));

            // GenericMessageで、任意の型のメッセージを送信
            MessengeInstance.Messenger.Send<GenericMessage<string>>
                (new GenericMessage<string>("GenericMessage"));
        }
    }
}

◆ View(メッセージ受信)

using GalaSoft.MvvmLight.Messaging;
using Common.MvvmLight;

namespace Views
{
    public class TestView
    {
        // --省略--

        // メッセージを受信
        private void ReceiveMessage()
        {
            // NotificationMessageで String型のメッセージを受信
            MessengeInstance.Messenger.Register<NotificationMessage>
                (this, msg => MessageBox.Show(msg.Notification));

            // GenericMessageで 任意の型のメッセージを受信
            MessengeInstance.Messenger.Register<GenericMessage<string>>
                (this, msg => MessageBox.Show(msg.Content));
        }
    }
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中