使用Visual Studio 2013,我将基于 MvvmCross 为Windows 8.1创建新的Windows应用商店应用。
我首先根据 Core.txt 待办事项文件中的说明创建包含视图模型的PCL .Core 类库。
接下来,我按照 Windows Store UI.txt 待办事项文件中的说明创建 .Store 应用程序。我确实想要使用导航框架,因此我将FirstView.xaml
页面替换为基本页面 FirstView.xaml
。
根据说明,LayoutAwarePage
类应该继承MvxStorePage
,但由于LayoutAwarePage.cs
不再包含在VS2013 / 8.1商店项目中,我改为FirstView.xaml
页面为MvxStorePage
类型:
<views:MvxStorePage x:Name="pageRoot" x:Class="App.Store.Views.FirstView"
... >
...
</views:MvxStorePage>
通过此更改,启动应用程序时会显示 FirstView ,但视图模型绑定不起作用!在Windows应用商店8.1应用中设置MvvmCross视图模型绑定的正确步骤是什么?
答案 0 :(得分:4)
似乎我忘记了 Windows Store UI.txt 待办事项文件中的一部分说明:
添加一个views文件夹和一个视图 - 基于BasicPage的xaml.cs和.xaml - 这将在Common文件夹中添加5个文件。
- 将Common / LayoutAwarePage.cs继承更改为Cirrious.MvvmCross.WindowsStore .Views.MvxStorePage
- 更改Common / LayoutAwarePage.cs - 删除OnNavigatedTo和OnNavigatedFrom处理程序
- 为您的Xaml添加一些内容 - 例如<TextBlock Grid.Row="1" Text="{Binding Hello}"/>
如果我从OnNavigatedTo
文件中删除OnNavigatedFrom
和FirstView.xaml.cs
覆盖,则FirstViewModel
将正确绑定到FirstView
。
因此,据我所知,Windows 8.1上的Windows应用商店应用说明应为:
<Page>
更改为<views:MvxStorePage>
。OnNavigatedTo
和OnNavigatedFrom
替换。 修改强>
此外,为了避免视图模型混淆,从 .xaml.cs 文件中删除DefaultViewModel
属性和关联的defaultViewModel
字段也是一个好主意,并且还会从 .xaml 文件中的DataContext
标记中删除<views:MvxStorePage>
属性,因为无论如何都会通过 MvvmCross设置相关的DataContext