在Xamarin开发,使用MessageCenter在ViewModel和View之间传递值

最近在学习Xamarin.Forms的开发,并且使用MVVM的结构。在学习的过程中发现页面的点击命令都在ViewModel中的Command实现,如果想要点击按键之后实现页面的跳转,必须在UI层调用 Navigation.Push方法才能实现。后来想想可以用MessageCenter实现。下面是实现方法:

首先定义一个传递的数据类,

    public class NavigationMessage
    {
        public object Paremeter { get; set; }
    }


在ViewModel中输入发现送消息代码,可放在某个点击命令中,

MessagingCenter.Send(new NavigationMessage() { Paremeter = "hello" },
                "Test");


在View中订阅该消息通知,

        protected override void OnAppearing()
        {
            SubscribeToMessages();
            base.OnAppearing();
        }

        protected override void OnDisappearing()
        {
            UnsubscribeToMessages();
            base.OnDisappearing();
        }

        private void SubscribeToMessages()
        {
            MessagingCenter.Subscribe(this, "Test", (args) => {
                Navigation.PushAsync(new TestPage());//跳转到新的页面
            });
        }

        private void UnsubscribeToMessages()
        {
            MessagingCenter.Unsubscribe(this, "Test");
        }

在其他方面如果发现传递值或者发送消息,都可以考虑 MessagingCenter是否可行。如果网友有其他方法欢迎指出


你可能感兴趣的:(Xamarin)