无法在跨 Windows 10 版本的 NavigationView 项目模板中实现相同的行为

2023-12-28

我对尝试在 UWP 应用程序中实现相同的视觉行为感到非常沮丧。这是我的问题:

我正在使用 NavigationView,并且想从 ViewModel 提供 NavigationViewItem。我还想提供标头,因此我创建一个 ICollectionDataItem 接口并为 NavigationViewItem 和 NavigationViewItemHeader 实现 ViewModel,以便主视图模型向 NavigationView 提供 ICollectionDataItem 列表,并由 DataTemplateSelector 发挥作用。现在看起来是这样的:

<NavigationView 
  MenuItemsSource="{Binding Home.CollectionsView, Source={StaticResource Locator}}"
  MenuItemTemplateSelector="{StaticResource NavigationViewTemplateSelector}" />

public interface ICollectionDataItem
{
    string Title { get; set; }
    string Glyph { get; set; }
    bool IsVisible { get; set; }
    bool IsHeader { get; set; }
}

然后,我为 NavigationViewItem 创建一个 DataTemplate,并为 NavigationViewItemHeader 创建另一个 DataTemplate:

<DataTemplate x:Key="NavigationItemTemplate" x:DataType="models:ICollectionDataItem">
  <NavigationViewItem> <!--Bindings-->
  </NavigationViewItem>
</DataTemplate>
<DataTemplate x:Key="NavigationHeaderTemplate" x:DataType="models:ICollectionDataItem">
  <NavigationViewItemHeader> <!--Bindings-->
  </NavigationViewItemHeader>
</DataTemplate>

当然,现在是 DataTemplateSelector:

public DataTemplate NavItemTemplate { get; set; }
public DataTemplate NavItemHeaderTemplate { get; set; }

protected override DataTemplate SelectTemplateCore(object item)
{
    ICollectionDataItem data = (ICollectionDataItem)item;
    return (data.IsHeader) ? NavItemHeaderTemplate : NavItemTemplate;
}

这工作得很好......直到它不起作用。 Windows 10 SDK 1809 中的 NavigationViewItem 的默认样式与 1803 中的完全不同。虽然在第一个 SDK 中一切正常,但在第二个 SDK 中它不会将 NavigationHeaderTemplate 识别为 NavigationViewItemHeader,而是显示一个带有 NavigationViewItemHeader 作为内容的 NavigationViewItem这是完全可以选择的。

我可以想象如何解决 NavigationViewItem(s) 的问题,我可以检查 Windows 版本,我可以为不同版本设置不同的模板,但我的问题是:

如何向 NavigationView 提供 ICollectionDataItem 列表,然后使用 xaml 将其转换为 NavigationViewItem(s) 和 NavigationViewItemHeader(s),并保证在 Windows 10 1803 和 1809 中具有相同的行为(我不假装使用以前的版本) ?

也许你认为答案是显而易见的,亲自尝试一下你就会知道。

我对这个问题感到非常沮丧;任何帮助将不胜感激。

提前致谢


除了使用 SplitView 和实现自定义导航(这基本上是 NavigationView 所做的)之外,我没有看到任何其他解决方案 - 正如所描述的,这似乎是操作系统级别的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在跨 Windows 10 版本的 NavigationView 项目模板中实现相同的行为 的相关文章

  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • c 中的快速模 10

    我正在寻找一种快速的模 10 算法 因为我需要加速我的程序 该程序在循环中执行许多模运算 我已经结帐了这一页 http cc davelozinski com c sharp use the modulus operator or alte
  • 如何在Flutter中仅选择单选按钮的一组值?

    我正在使用 Flutter Dart SQLite 开发测验应用程序 在这里 我使用 RadioListTile 来实现单选按钮功能 我将文本值从数组传递到此StatefulWidget 这是我正在使用的代码 import package
  • LinkedHashMap EntrySet 的顺序未保留在流中(Android)

    我正在为注册屏幕创建一个非常简单的表单验证实用程序 并且我遇到了一些关于以下方面的意外行为LinkedHashMap以及从其创建的流entrySet 我将验证结果存储在LinkedHashMap 语句顺序如下 Map
  • 我想在我的项目中创建 django 弹出表单 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在 django 中创建了费用管理系统 问题是我使用简单的表单 对于每个表单 用户必须导航到单独的页面 我想在 django 中创建
  • React:axios网络错误

    这是我第一次使用axios 遇到了一个错误 axios get http someurl com page1 param1 1 param2 param2 id then function response alert catch func
  • 数据表动态隐藏/显示列太慢

    我的目标是使用数据表 JQuery 插件动态显示 隐藏列 当我有大约 500 行时 需要很长时间才能完成 我正在使用新的 Datatables API 1 10 0 oats detailed view button click funct
  • 寻找多个多边形的共同轮廓

    我试图找到一种在多个多边形之间绘制公共轮廓的算法 我的意思就像这张照片上的那样 我们有两个矩形 在我的例子中 它们不是矩形 而是大多数角度为直角的多边形 我正在寻找共同的轮廓 例如图像第二部分上的红色路径 我认为最大的问题是找到新的点 我在
  • 如何在 Visual Studio 2008 C++ 中链接 .lib

    我发现将 lib 文件正确链接到我的 C Win32 控制台应用程序确实很困难 这是我的问题 正如这篇 MSDN 文章中一样 我开发了一个 MathFuncsLib lib 文件 http msdn microsoft com en us
  • 使用计算字段正确显示数据透视表中的总计

    我有一个 Excel 数据透视表 看起来像 Date Sum of DURATION Capped Daily Total 03 Jan 9 5 8 0 04 Jan 6 0 6 0 05 Jan 10 5 8 0 06 Jan 4 5 4
  • Python selenium“about:blank&utm_content=firstrun”错误

    我一直在努力弄清楚我的代码发生了什么 但我无能为力 每当我运行我的程序时 我都会收到下图中的错误 我正在使用 python 3 4 4 和 selenium 的最新版本 Windows 10 from selenium import web
  • Django 按日期排序(日)

    我想先按天排序模型 然后按分数排序 这意味着我希望看到每天得分最高的文章 class Article models Model date modified models DateTimeField blank True null True
  • 如何在 Swift 中创建范围?

    在 Objective c 中 我们使用 NSRange 创建范围 NSRange range 那么如何在 Swift 中创建范围呢 更新为 Swift 4 Swift 范围比NSRange 并且它们在 Swift 3 中并没有变得更容易
  • Jetpack Compose 线圈预载

    我想将图像加载到启动屏幕上 以便我可以使用线圈将请求结果设置到其他屏幕上的背景 但我无法在线圈中完全实现这一点 如何将线圈请求的结果保存到 Cahce 并在其他屏幕上使用该结果 启动画面 val imageLoader ImageLoade
  • HTML 电子邮件的图像地图、Safari 和 Gmail 出现问题

    我有一个奇怪的问题 我正在发送一封 html 电子邮件 其中包含一些图像映射链接 我的问题与 Gmail 和 Safari 相关 奇怪的是 从 Gmail 及其图像映射 查看的电子邮件在 Firefox IE 和 Chrome 中运行良好
  • Swing 多列组合框

    目前 我正在寻找一个可以放置在我的 Java Swing 应用程序中的多列组合框组件 目前 我使用组合框作为用户键入时的自动完成下拉列表 是否有任何可用的 GUI 组件 使我能够拥有以下内容 多列 正如您所看到的 下拉列表中有 3 列 而不
  • Vim 错误 E492 - 不是编辑器命令:PluginInstall

    我正在尝试在我的 Macvim 上安装 Vundle 我遵循以下link https github com gmarik Vundle vim获取 Vundle 我还配置了我的 vimrc 文件 但是当我尝试 PluginInstall 时
  • React 中的内联样式在打印模式下不起作用

    div 所以 color index 是十六进制颜色 例如 ffffff 我可以在网络浏览器中看到正确的颜色 但由于某种原因 这在打印预览中不起作用 我尝试添加 蓝色 而不是颜色 索引 这在网络浏览器中有效 但它没有更新打印预览 我认为内联
  • Android GC - LogCat 始终显示 GC 活动

    当我运行程序时 logcat 显示大量 GC 活动 like GC freed 10324 objects 510376 bytes in 103 ms GC freed 10324 objects 510376 bytes in 103
  • 通过 wine metaeditor.exe 通过命令行编译 MQL4

    我试图达到可以通过命令行进行编译 语法检查的程度 这样我就可以避免使用元编辑器进行代码管理 我正在使用这个命令 也尝试使用 s 和 log wine metaeditor exe compile MQL4 Experts MACD Samp
  • 无法在跨 Windows 10 版本的 NavigationView 项目模板中实现相同的行为

    我对尝试在 UWP 应用程序中实现相同的视觉行为感到非常沮丧 这是我的问题 我正在使用 NavigationView 并且想从 ViewModel 提供 NavigationViewItem 我还想提供标头 因此我创建一个 ICollect