【问题标题】:EventToCommand using Mvvmlight and xamarin formsEventToCommand 使用 Mvvmlight 和 xamarin 表单
【发布时间】:2014-11-23 17:06:47
【问题描述】:

在使用 MvvmLight 和 Xamarin 表单为所有三个移动平台进行开发时,对于不支持命令模式的事件,将视图中的事件绑定到视图模型中的命令的推荐方法是什么?是否可以使用 EventToCommand?

谢谢!

【问题讨论】:

    标签: xamarin mvvm-light xamarin.forms


    【解决方案1】:

    不确定 MVVMLight,但您可以做的是在相关 ViewModel 中实现的接口 (IPageLifeCycleEvents) 中定义事件。在 View 中,您可以将 BindingContext 设置为 IPageLifeCycleEvents 类型的实例,并通过接口将 View 中的事件传递给 ViewModel。例如

    public interface IPageLifeCycleEvents
    {
        void OnAppearing ();
        void OnDisappearing();
        void OnLayoutChanged();
    }
    
    public class SampleView : ContentPage
    {
        public BaseView () {
            var lifecycleHandler = (IPageLifeCycleEvents) this.BindingContext;
            base.Appearing += (object sender, EventArgs e) => {
                lifecycleHandler.OnAppearing();
            };
    
            base.Disappearing += (object sender, EventArgs e) => {
                lifecycleHandler.OnDisappearing ();
            };
    
            base.LayoutChanged += (object sender, EventArgs e) => {
                lifecycleHandler.OnLayoutChanged();
            };
        }
    }
    
    public class SampleViewModel : IPageLifeCycleEvents
    {
    
    
        #region IPageLifeCycleEvents Methods
    
        public void OnAppearing ()
        {
            //Do something here
        }
    
        public void OnDisappearing ()
        {
            //Do something here
        }
    
        public void OnLayoutChanged ()
        {
            //Do something here
        }
    
        #endregion
    }
    

    在我的实际实现中,由于使用了 IOC 和 Base 模型,我使用了稍微不同的设置。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 2016-06-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      相关资源
      最近更新 更多