Xamarin.Forms
MessagingCenter
수색…
소개
Xamarin.Forms에는 분리 된 코드를 홍보하기위한 메시징 메커니즘이 내장되어 있습니다. 이렇게하면 뷰 모델과 다른 구성 요소가 서로를 알 필요가 없습니다. 단순한 메시징 계약을 통해 통신 할 수 있습니다.
기본적으로 MessagingCenter
를 사용하기위한 두 가지 주요 구성 요소가 있습니다.
구독하기 ; 특정 서명 (계약)이있는 메시지를 수신하고 메시지 수신시 코드를 실행합니다. 메시지에는 여러 명의 가입자가있을 수 있습니다.
보내기 ; 행동을 취할 가입자를위한 메시지 보내기
간단한 예
여기서는 Xamarin.Forms에서 MessagingCenter를 사용하는 간단한 예를 살펴 보겠습니다.
먼저 메시지를 구독 해 봅시다. FooMessaging
모델에서는 MainPage
에서 오는 메시지를 구독합니다. 메시지는 "안녕하세요"여야하며 우리가 메시지를 받으면 Greeting
속성을 설정하는 처리기를 등록합니다. 마지막으로 this
현재 FooMessaging
인스턴스가이 메시지를 등록하고 있음을 의미합니다.
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");