カップ麺シリーズ:一から学べるWPF における CommunityToolkit.Mvvm(MVVM ToolKit) 覚え書き(3) メッセージングの簡単なサンプル
プロジェクトの準備 この記事では、メッセージングの利用自体は簡単であることを実感してもらうため、 コンソールアプリケーションでの、新規プロジェクトによるサンプルとなります。 Visual Studioから「新しいプロジェクト」で「C#」「Windows」経由で「コンソール アプリ」を選び、 プロジェクト名は「MessagingTest」にして、ソリューションを作成してください。今回はプロジェクト名を変更しても問題ありません。 フレームワークは「.NET 9.0」を使用します。 MVVM Toolkfit の利用準備 ソリューションに対し、Visual Studioのメニュー「ツール」「NuGetパッケージマネージャ」から「ソリューションのNuGetパッケージの管理」を選び、「参照」タブから CommunityToolkit.Mvvm をインストールします。 (1)基本のメッセージング まずは Program.cs を全削除し、以下の内容に置き換えます。 この際、コピペでは身につかないとか言いません。プロジェクトを作って動かせば、見えてくるものもあるでしょう。 using CommunityToolkit.Mvvm.Messaging; namespace MessagingTest { /// <summary> /// 送信クラス(Main含む) /// </summary> public static class Sender { public static void Main() { // 保持する必要はないが、ここでは受信クラスを作る必要がある var _ = new Receiver(); // 弱い参照でのメッセージング var message = new MyMessage("もりゃき", 12); WeakReferenceMessenger.Default.Send(message); // メッセージが出力されるまで待機 Console.ReadKey(); } } /// <summary> /// 受信クラス /// </summary> public class Receiver { public Receiver() { // 弱い参照での受信設定 WeakReferenceMessenger.Default.Register<MyMessage>(this, HandleRegistrationInfo); } // 受信メッセージの処理メソッド private void HandleRegistrationInfo(object recipient, MyMessage message) { Console.WriteLine($"{message.Name} の所持金は {message.Value} 円。"); } } /// <summary> /// メッセージクラス /// </summary> public class MyMessage { public string Name { get; set; } = string.Empty; public int Value { get; set; } public MyMessage() { } public MyMessage(string name, int value) { Name = name; Value = value; } } } こうすると、以下の出力になります。 ...