0

我有一个基本的 C# WPF TreeView,但我不喜欢展开/折叠图标是三角形,我想改用加号/减号图标。

这个问题,我注意到您可以为应用程序设置Windows主题,它使用uxtheme.dll更改为Vista / 7主题,更改为XP主题的主题DLL是什么以及如何添加引用xaml 文件中使用修改后的 TreeView 控件的行?

4

2 回答 2

2

UxTheme.dll 为使用公共控件库的应用程序提供主题服务,此外还提供部分 Windows chrome(如窗口边框和标题栏)和自定义元素(如开始菜单和任务栏)。UxTheme.dll 于 2001 年随 Windows XP 引入,但它提供的服务因 Windows 版本而异。

WPF 不使用 UxTheme.dll 作为其主题 - 所有 WPF“视觉样式”实际上都是 XP“Luna”(XP 的 Fischer-Price 主题)、XP“Royale”(MCE2005)和 Vista/7 Aero 的矢量图形重新实现样式。此外,WPF 也不使用 Common Controls 库,它对所有主要的 Windows 控件进行 100% 托管的重新实现——这就是 WPF 应用程序在 Windows 上倾向于落入 Uncanny Valley 的原因——它们看起来像本机应用程序,但有些东西不是对他们。

我自己不是 WPF 专家,但我知道你可以覆盖特定元素的渲染,但是我不知道你是否可以在不继承它们的情况下做到这一点。

我很抱歉没有直接回答你的问题,我只是希望我能提供一些有用的见解。

于 2012-06-26T20:00:00.917 回答
1

不幸的是,我认为这需要覆盖 TreeView 的默认样式和控件模板。这是 MSDN 的链接:http: //msdn.microsoft.com/en-us/library/ms752048.aspx。如果您搜索Path x:Name="Collapsed"Path x:Name="Expanded"这就是箭头的绘制方式。

您可以通过将 Path 元素与每个状态的 Image 交换来覆盖它。或者,您也可以使用 Path 元素来绘制类似于您想要的 + - 效果的东西。

于 2012-06-26T20:26:46.690 回答