使用带有Xamarin表单的MvvmLight为所有三个移动平台进行开发时,对于不支持命令模式的事件,建议将视图中的事件绑定到viewmodel中的命令的方法是什么?是否可以使用EventToCommand?
谢谢!
答案 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模型的使用,我使用了稍微不同的设置。
祝你好运