【问题标题】:Procedure for creating an MvvmCross Store application for Windows 8.1 from scratch?从头开始为 Windows 8.1 创建 MvvmCross Store 应用程序的过程?
【发布时间】:2013-11-12 20:35:11
【问题描述】:

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

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

接下来,我创建我的 .Store 应用程序,现在按照 Windows Store UI.txt 待办事项文件中的说明进行操作。我确实想使用导航框架,所以我将FirstView.xaml 页面替换为基本页面 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 视图模型绑定的正确过程是什么?

【问题讨论】:

    标签: c# windows-store-apps mvvmcross windows-8.1


    【解决方案1】:

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

    添加视图文件夹和视图 - 基于 BasicPage 的 xaml.cs 和 .xaml - 这将向 Common 文件夹添加 5 个文件。
    - 将 Common/LayoutAwarePage.cs 继承更改为 Cirrious.MvvmCross.WindowsStore。 Views.MvxStorePage
    - 更改 Common/LayoutAwarePage.cs - 删除 OnNavigatedTo 和 OnNavigatedFrom 处理程序
    - 为您的 Xaml 添加一些内容 - 例如&lt;TextBlock Grid.Row="1" Text="{Binding Hello}"/&gt;

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

    所以,据我所知,Windows 8.1 上的 Windows 应用商店应用的说明应该是:

    • 在每个 view .xaml 文件中,将 &lt;Page&gt; 更改为 &lt;views:MvxStorePage&gt;
    • 在每个 view .xaml.cs 文件中,删除 OnNavigatedToOnNavigatedFrom 覆盖。

    编辑 此外,为避免视图模型混淆,最好从 .xaml.cs 文件中删除 DefaultViewModel 属性和关联的 defaultViewModel 字段,同时删除DataContext 属性来自 .xaml 文件中的 &lt;views:MvxStorePage&gt; 标记,因为相关的 DataContext 无论如何都会由 MvvmCross 设置。

    【讨论】:

    • 你打败了我的答案。问题是这些覆盖没有调用它们的基本方法——比如base.OnNavigatedTo(e)。这可以防止 MvvmCross 拦截导航并加载 ViewModel。我确实非正式地问过其中一位 MS 人员是否可以更改 - 答案是否定的。
    • 感谢@Stuart 的澄清。删除视图中的覆盖是否安全?或者由于没有调用 navigationHelper.OnNavigatedTo/From 方法,是否会出现导航问题?
    • 这些调用存在的原因是状态加载/保存 - msdn.microsoft.com/en-us/library/windows/apps/jj655410.aspx - 恐怕这个区域对我来说有点不清楚......它现在看起来比 8.0 更好,但在练习时/如果您决定需要在应用中保留页面/视图模型状态,您可能需要进行一些试验。
    • 我觉得这个应该加到txt文件里,一想到这个文件夹没加,我就赶紧去找答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多