Xamarin.Forms
MessagingCenter
サーチ…
前書き
Xamarin.Formsには、分離されたコードを促進するメッセージングメカニズムが組み込まれています。このように、ビューモデルと他のコンポーネントはお互いを知る必要はありません。彼らは簡単なメッセージング契約で通信することができます。
MessagingCenter
を使用するための基本的な要素は、基本的に2つありMessagingCenter
。
購読する ;特定の署名(契約)を持つメッセージをリッスンし、メッセージが受信されたときにコードを実行します。メッセージには複数のサブスクライバを含めることができます。
送信します。加入者が行動するためのメッセージを送信する。
簡単な例
ここでは、Xamarin.FormsでMessagingCenterを使用する簡単な例を見ていきます。
まず、メッセージを購読してみましょう。でFooMessaging
モデル我々はから来たメッセージをサブスクライブMainPage
。メッセージは「Hi」でなければならず、受け取ったときにプロパティGreeting
を設定するハンドラを登録します。最後に、現在のFooMessaging
インスタンスがこのメッセージに登録してthis
ことを意味します。
public class FooMessaging
{
public string Greeting { get; set; }
public FooMessaging()
{
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
this.Greeting = "Hi there!";
});
}
}
この機能を起動するメッセージを送信するには、 MainPage
というページがあり、その下にコードを実装する必要があります。
public class MainPage : Page
{
private void OnButtonClick(object sender, EventArgs args)
{
MessagingCenter.Send<MainPage> (this, "Hi");
}
}
私たちのMainPage
には、メッセージを送信するハンドラがあるボタンがあります。 this
はMainPage
インスタンスでなければなりません。
引数を渡す
また、メッセージを引数として渡すこともできます。
前の例のクラスを使って拡張します。受信側では、 Subscribe
メソッド呼び出しの直後に、あなたが期待している引数の型を追加します。また、ハンドラシグニチャの引数も宣言してください。
public class FooMessaging
{
public string Greeting { get; set; }
public FooMessaging()
{
MessagingCenter.Subscribe<MainPage, string> (this, "Hi", (sender, arg) => {
this.Greeting = arg;
});
}
}
メッセージを送信する場合は、必ず引数の値を含めてください。また、 Send
メソッドのすぐ後ろに型を追加し、引数の値を追加します。
public class MainPage : Page
{
private void OnButtonClick(object sender, EventArgs args)
{
MessagingCenter.Send<MainPage, string> (this, "Hi", "Hi there!");
}
}
この例では単純な文字列が使用されていますが、他のタイプの(複雑な)オブジェクトも使用できます。
サブスクライブ解除
メッセージを受け取る必要がなくなったときに、簡単に退会することができます。あなたは次のようにすることができます:
MessagingCenter.Unsubscribe<MainPage> (this, "Hi");
引数を指定するときは、次のように完全な署名を解除する必要があります。
MessagingCenter.Unsubscribe<MainPage, string> (this, "Hi");