我正在使用MvvmCross在Xamarin中构建一个跨平台应用程序,我已经在我的核心中声明了我的ViewModel并且正在开发我的Windows 8项目,这要归功于Stuart Lodge以前回答过我{{3}我可以这样绑定一个Page的Loaded事件(使用Interactivity dll):
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding MyICommandThatShouldHandleLoaded}" />
</i:EventTrigger>
</i:Interaction.Triggers>
如何在Android中使用MvvmCross执行相同操作?
谢谢!
答案 0 :(得分:1)
你能告诉你在加载的事件上想要完成什么吗?
在尝试实施视图模型时,通常我不想在UI方面做些什么。
UI可以根据平台的不同而有所不同。
在实现视图模型时,一种思考方式是认为您将需要使用视图模型进行测试,而无需使用UI。在这种情况下,您的应用应该能够在没有附加UI的情况下运行。如果您需要用户输入(如用户名和密码),您编写的测试代码就是设置视图模型的属性,类似于当UI绑定到这些属性时数据绑定的操作方式:
loginViewModel.Username = "admin";
loginViewModel.Password = "12345";
例如,在您提供的链接中,我不确定为什么需要了解主窗口加载事件以显示登录屏幕。
应对主窗口的MainViewModel可以调用
pulic class MainViewModel : MvxViewModel
{
public void Init()
{
ShowViewModel<LoginViewModel>();
}
}
这只是一个例子,它可能不那么好,但我只想表现出不同的方式。
请记住,从视图模型的角度来看,ShowViewModel并不意味着太多。
视图模型只是调用以显示另一个视图模型,这是某种“某种方式”。连接到视图。 它可能意味着显示弹出窗口,或导航到另一个页面/窗口等。视图模型不需要知道。这主要是因为UI可以在每个平台上以不同的方式工作,或者每个平台上的UI要求可能不同(因为UI模式可能不同)。
MvvmCross有一种很好的方法可以绕过默认的ShowViewModel行为(通过编写特定于平台的自定义演示者)。基本上,您可以控制在平台上如何执行ViewViewModel对视图模型类型的请求。