UWP Navigation通过 MVVM 进行视图导航

2023-12-30

我在我的应用程序中使用 NavigationView 作为主控件,并在页面加载时使用框架。

<NavigationView x:Name="MyNavView" IsBackButtonVisible="Collapsed" SelectionChanged="{x:Bind ViewModel.OnSelectionChanged}" PaneDisplayMode="Top">
    <NavigationView.MenuItems>
        <NavigationViewItem Icon="Contact" Content="Contact" Tag="MasterDetailPage"/>
        <NavigationViewItem Icon="Favorite" Content="Favorites" Tag="FavoritesPage"/>
    </NavigationView.MenuItems>
    <Frame x:Name="RootFrame"/>
</NavigationView>

有两个事件选择已更改 and 调用的项目可以实现导航到加载的页面根框架(我的框架的名称)。但我想用Command来制作MVVM。我什至还没有找到 Command 道具导航视图本身或为了导航视图项。之后我在 ViewModel 中处理了 SelectionChanged 事件,但在我看来它与 MVVM 相矛盾。

那么,如何使用 Command 来制作 MVVM?如果没有这样的机会告诉我如何实现MVVM本身不处理事件。


实现这一点与 WPF 的实现方式非常相似,您需要首先通过 NuGet 安装 Microsoft.Xaml.Behaviors.Uwp.Managed 包。然后向您的 NavigationView 添加一个行为:

xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"

<NavigationView MenuItemsSource="{x:Bind ViewModel.MenuItems}">

    <i:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="ItemInvoked">
            <core:EventTriggerBehavior.Actions>
                <core:InvokeCommandAction Command="{x:Bind ViewModel.ItemInvokedCommand}" />
            </core:EventTriggerBehavior.Actions>
        </core:EventTriggerBehavior>
    </i:Interaction.Behaviors>

我在用着x:Bind这里用于编译时错误检查,但常规Binding当然也会同样有效。无论哪种方式,都可以在视图模型中使用命令处理程序来跟进,就像处理 WPF 一样:

private ICommand _ItemInvokedCommand;
public ICommand ItemInvokedCommand => this._ItemInvokedCommand ?? (this._ItemInvokedCommand = new RelayCommand<NavigationViewItemInvokedEventArgs>(OnItemInvoked));


private void OnItemInvoked(NavigationViewItemInvokedEventArgs args)
{
    // could also use a converter on the command parameter if you don't like
    // the idea of passing in a NavigationViewItemInvokedEventArgs
    this.NavigationService.NavigateTo(args.InvokedItem);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UWP Navigation通过 MVVM 进行视图导航 的相关文章

随机推荐

  • 在 Apache Solr 中对文件夹及其子文件夹中包含的所有文件进行索引

    Apache Solr 是否可以用于索引文件夹 父文件夹 及其子文件夹的所有文件 包含所有类型的文件 XML json pdf doc 等 使用post工具就可以完成 java Dc test Drecursive Dauto jar po
  • 将函数名称作为参数传递给另一个函数

    我正在 aspx 页面上从客户端调用 Web 服务 并且我想在该服务成功时调用一个函数 函数的名称将作为参数传递给该函数 该名称会动态更改 我是这样传递的 function funName parm1 parm2 onSucceedCall
  • 反射 java.lang.ClassNotFoundException

    我正在使用以下内容 protected void onActivityResult int requestCode int resultCode Intent data super onActivityResult requestCode
  • 使用 numpy 进行多元多项式回归

    我有很多样品 y i a i b i c i where y假定作为多项式变化a b c达到一定程度 例如 对于给定的一组数据和 2 度 我可能会生成模型 y a 2 2ab 3cb c 2 5ac 这可以使用最小二乘法来完成 并且是 nu
  • Java 中忽略 SSL 验证

    我必须使用无效的 SSL 证书调用 Web 服务器上托管的 HTTP 服务 在开发中 我正在导入证书keytool但每个客户端安装的证书都会不同 所以我不能只是捆绑它 前言 我DO要知道跳过 SSL 验证确实很难看 在这种特定情况下 我什至
  • 在 h2 数据库上创建视图

    我正在尝试在 H2SQL 上创建视图 但找不到正确的语法 我在用着 CREATE VIEW dbo Log AS SELECT FROM dbo MyTable 我收到错误 Caused by org h2 jdbc JdbcSQLExce
  • 将 var 初始化为 null

    我已经看到如何初始化var 为空 https stackoverflow com questions 2904689 how to initialize var这对我的情况没有帮助 我有 string nuller null var fir
  • 如何解决python pdfkit中的“wkhtmltopdf报告错误:由于网络错误而退出并显示代码1:ProtocolUnknownError”

    我正在使用姜戈 这是views py 中的代码 def download as pdf view request doc type pk import pdfkit file name invoice pdf pdf path os pat
  • Terraform timestamp() 为仅数字字符串

    The timestamp https www terraform io docs configuration interpolation html timestamp插值语法中的函数将返回 ISO 8601 格式的字符串 如下所示2019
  • py2exe com dll问题

    我正在尝试用 python 制作一个 com dll 但我尝试注册到编译的 dll 时出现错误消息 运行时错误 r6034 和 无法加载 python dll 这个问题的解决方案是什么 mycode 设置 py This is the di
  • 检测受密码保护的word文件

    我正在使用 netoffice 库从 Word 文件中提取文本 这应该是自动化过程 但是 当Word文件受密码保护时 会显示警报窗口 因此用户需要输入密码 由于这是自动化过程 用户无需输入密码 程序将在此停止 如何检测单词文件是否受 net
  • orderBy后Angularjs错误$index

    我是 Angular js 的新手 在对数组进行排序和处理排序后的数据时遇到一些问题 我有一个包含项目的列表 并希望按 Store storeName 对其进行排序 该列表到目前为止正在运行 但在对数据进行排序后 我的删除功能不再起作用 我
  • Haskell中的IO类型是什么

    我是 Haskell 编程语言的新手 我一直在绊倒IOtype 作为函数参数或返回类型 playGame Screen gt IO OR gameRunner IO String gt String gt IO gt Screen gt I
  • jQuery UI 2 日期选择器和范围选择

    我正在尝试连接 2 个日期选择器以允许用户选择日期范围 我创建了这样的代码 function var dates fromDate toDate datepicker dateFormat yy mm dd changeMonth true
  • 使用向量和对的邻接列表图表示

    我想实现竞争性编程 1 书中的邻接列表图表示 该实现使用 V 顶点的向量 并且对于每个顶点 v 另一个 包含有连接的对 相邻顶点及其边权重 的向量 v 我在获取该图的输入并显示输出时遇到问题 在书中 他们做了这样的声明 include
  • Eclipse 格式化程序在空注释行中添加空格

    Eclipse 代码格式化程序在每个空 Javadoc 注释行中添加一个尾随空格 请参见屏幕截图 同事的格式化程序总是删除这些空格 从而产生恼人的 SVN 差异 他声称使用相同的格式化程序设置 XML 文件 尽管如此 我尝试了格式化程序设置
  • 是否可以检测文本何时换行?

    是否可以检测文本换行的位置 Lorem ipsum dolor 坐 amet 假设上面的文本在 dolor 一词之后换行 如何检测到它并在那里插入一些标记 这样它就可以了Lorem ipsum dolor div class wrap ma
  • 如何在 swift 2.2 中休眠几毫秒?

    请有人告诉我如何在 swift 2 2 中使用 sleep 几毫秒 while true print sleep for 0 002 seconds sleep 0 002 not working but while true print
  • R 地图()中的县 FIPS 准确吗?

    当我运行以下代码时 require maps colors lt data frame county county fips polyname color rep FFFFFF nrow county fips stringsAsFacto
  • UWP Navigation通过 MVVM 进行视图导航

    我在我的应用程序中使用 NavigationView 作为主控件 并在页面加载时使用框架