2014-11-23 54 views
1

当为使用MvvmLight和Xamarin表单的所有三个移动平台开发时,对于不支持命令模式的事件,视图中的事件绑定到视图模型中的命令的建议方式是什么?有没有可能使用EventToCommand?使用Mvvmlight和xamarin表单的EventToCommand

谢谢!

回答

1

不确定MVVMLight,但您可以做的是定义在相关ViewModel中实现的接口中的事件(IPageLifeCycleEvents)。在视图中,您可以将BindingContext设置为IPageLifeCycleEvents类型的实例,并通过接口将视图中的事件传递给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模型的使用,我使用稍微不同的设置。

祝你好运