首页 > 解决方案 > 在 UWP 应用中使用 TreeView 时如何处理命名空间冲突

问题描述

将“ItemContainerStyle”设置为 generic.xaml 中定义的“StaticResource TreeViewItemStyle”时引发异常。该消息表明该样式正在使用“Windows.UI.Xaml.Controls.TreeViewItem”而不是“Microsoft.UI.Xaml.Controls.TreeViewItem”。

我删除了 ItemContainerStyle 分配以确认它是导致异常的行。

<ControlTemplate TargetType="muxcontrols:TreeView">
                        <muxcontrols:TreeViewList x:Name="ListControl"
                                      ItemTemplate="{StaticResource TreeViewItemDataTemplate}"
                                      ItemContainerStyle="{StaticResource TreeViewItemStyle}">

这个问题似乎很明显,但一个适当的解决方案却让我望而却步。为了利用这种风格,我是否开始在 generic.xaml 文件中添加“muxcontrols:”?这似乎是个坏主意。我是否需要分别重新创建样式和行为?

标签: treeviewuwp-xaml

解决方案


我尝试(最小构建 17763 和目标构建 17134)来消除版本问题,但似乎我都需要 17763。尽管如此,我没有设置 ItemsSource。我正在尝试文档中使用的技术:“docs.microsoft.com/en-us/windows/uwp/design/...”用于音乐库 TreeView 示例。我真实项目的最低版本是 16299。

所以,问题就很清楚了。TreeView控件是从 build 17134 引入的。如果您使用的是平台 API,则需要确保项目的目标版本为 17134 或更高版本。既然您说要设置 ItemsSource。ItemsSource及其相关 API 需要 Windows 10 版本 1809 ( SDK 17763 ) 或更高版本,因此您需要使项目的目标版本为 17763。

然后,您可以直接使用 TreeView 控件,如下所示:

<TreeView></TreeView>

如果您使用的是Windows UI 库 API,则需要按照Windows UI 库入门 文档下载并安装 Windows UI 库。请注意:

重要提示:要使用 WinUI 2.1,您的项目的 Min 版本必须为 14393 或更高,Target 版本必须为 17763 或更高。

然后,如果要在 WinUI 库中使用 TreeView 控件,请在 XAML 页面中,在页面顶部添加引用

xmlns:controls="using:Microsoft.UI.Xaml.Controls"

在 XAML 页面上,您可以直接输入以下内容:

<controls:TreeView></controls:TreeView>

推荐阅读