【发布时间】:2014-12-10 10:34:34
【问题描述】:
我想适配默认的WPF TreeView/TreeViewItem模板,这样整行就可以高亮,如图:
但是,我尝试了几个谷歌搜索的模板,但没有一个能真正产生效果,一些错误的答案甚至被标记为正确......
在代码流中有一个答案似乎可以工作,但它添加了额外的 C# 代码,或者不需要额外的代码但不能完美地工作。
我不想添加额外的 C# 代码,而只想更改默认模板。 有人有什么好主意吗?
非常感谢!
----编辑----
@Nick,使用你的模板后,显示如下,
首先,它没有突出显示“整个”行,“整个”是指树的最宽宽度。
其次,它突出了包括孩子在内的额外区域。
【问题讨论】:
-
1) 覆盖默认模板 2) 使用 Snoop 找到您需要突出显示的确切面板 3) 在 Trigger 的“OnSelected”属性中为该面板添加背景颜色。
-
@Kumar 这个问题其实比我们大家最初想象的要难,TreeViewItem 使用了递归结构,这让它和其他控件有很大的不同
-
是的,你是对的;让我进一步检查并回复您。
-
它突出显示了子项,因为触发器设置器的目标是包含项目及其子项的
。您将要使用 Grid.Column="0" Grid.ColumnSpan="3" 添加一个空矩形,然后使用这些 Setter 来更改其背景。这不会解决扩展器左侧空白的问题,但可以解决突出显示子项的问题。 -
这是我找到的唯一解决方案,而且效果很好:stackoverflow.com/a/37784413
标签: wpf treeview controltemplate treeviewitem