【发布时间】:2014-11-23 17:06:47
【问题描述】:
在使用 MvvmLight 和 Xamarin 表单为所有三个移动平台进行开发时,对于不支持命令模式的事件,将视图中的事件绑定到视图模型中的命令的推荐方法是什么?是否可以使用 EventToCommand?
谢谢!
【问题讨论】:
标签: xamarin mvvm-light xamarin.forms
在使用 MvvmLight 和 Xamarin 表单为所有三个移动平台进行开发时,对于不支持命令模式的事件,将视图中的事件绑定到视图模型中的命令的推荐方法是什么?是否可以使用 EventToCommand?
谢谢!
【问题讨论】:
标签: xamarin mvvm-light xamarin.forms
不确定 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 模型,我使用了稍微不同的设置。
祝你好运
【讨论】: