如何获得XP主题TreeView展开/折叠图标?

时间:2012-06-26 19:43:31

标签: c# wpf dll treeview themes

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

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

2 个答案:

答案 0 :(得分:2)

UxTheme.dll除了部分Windows镶边(例如窗口边框和标题栏)和自定义元素(如开始菜单和任务栏)外,还为使用公共控件库的应用程序提供主题服务。 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专家,但我知道你可以覆盖特定元素的渲染,但我不知道你是否可以在没有子类化的情况下做到这一点。

我为没有直接回答你的问题而道歉,我希望我能提供一些有用的见解。

答案 1 :(得分:1)

不幸的是,我认为这需要覆盖TreeView的默认样式和控件模板。以下是MSDN的链接:http://msdn.microsoft.com/en-us/library/ms752048.aspx。如果您搜索路径x:名称="折叠" 路径x:名称="展开" 这是箭头的方式绘制。

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