EventToCommand使用Mvvmlight和xamarin表单

时间:2014-11-23 17:06:48

标签: xamarin mvvm-light xamarin.forms

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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模型的使用,我使用了稍微不同的设置。

祝你好运