1

使用 Visual Studio 2013,我正在为基于MvvmCross的 Windows 8.1 创建一个新的 Windows Store 应用程序。

我首先根据Core.txt待办事项文件中的说明创建带有视图模型的 PCL .Core类库。

接下来,我创建我的.Store应用程序,现在按照Windows Store UI.txt待办事项文件中的说明进行操作。我确实想使用导航框架,所以我将FirstView.xaml页面替换为Basic Page FirstView.xaml

根据说明,LayoutAwarePage该类应该继承MvxStorePage,但由于LayoutAwarePage.cs不再包含在 VS2013/8.1 Store 项目中,我改为将我的FirstView.xaml页面更改为一种MvxStorePage类型:

<views:MvxStorePage x:Name="pageRoot" x:Class="App.Store.Views.FirstView"
 ... >
...
</views:MvxStorePage>

通过此更改,当我启动应用程序时会显示FirstView,但视图模型绑定不起作用!在 Windows Store 8.1 应用程序中设置 MvvmCross 视图-视图模型绑定的正确过程是什么?

4

1 回答 1

4

似乎我忘记了Windows Store UI.txt待办事项文件中的一部分说明:

添加一个视图文件夹和一个视图 - 基于 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}"/>

如果我从文件中删除OnNavigatedToOnNavigatedFrom覆盖,将正确绑定到.FirstView.xaml.csFirstViewModelFirstView

因此,据我所知,Windows 8.1 上的 Windows Store 应用程序的说明应该是:

  • 在每个视图 .xaml文件中,更改<Page><views:MvxStorePage>.
  • 在每个视图 .xaml.cs文件中,删除OnNavigatedToOnNavigatedFrom覆盖。

编辑此外,为避免视图模型混淆,从.xaml.cs文件中删除DefaultViewModel属性和关联defaultViewModel字段,并从.xaml文件中的标记中删除属性 也是一个好主意,因为无论如何,相关将由MvvmCross设置。DataContext<views:MvxStorePage>DataContext

于 2013-11-12T09:54:55.620 回答