2011-07-06 47 views
2

如何减少最深的TreeViewItem节点的左缩进?出于某种原因,除了最深的节点之外,WPF似乎会将这种缩进增加很多。纵观Windows XP的树视图实现,每个深度都有相同的左边距。减少TreeViewItem中最深的节点的缩进

我周围搜索,我似乎无法找到工作的实施它似乎是可能的。

回答

4

UPDATE:更正解决方案

下面是引用一个问题的图片...

enter image description here

这里是你在做什么的图片(可能)希望为...

enter image description here

注:LIS t个文件出现在第二个屏幕截图的左侧。

深入研究之后,我认为它是默认TreeViewItem模板中的缺陷。为了解决这个问题并做出其他所需的调整,您需要提供自己的TreeViewItem模板。从this SO answer默认模板树型视图开始......

您需要更改这个...

<Trigger Property="HasItems" Value="false"> 
    <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/> 
</Trigger> 

要这个......

<Trigger Property="HasItems" Value="false"> 
    <Setter Property="Visibility" TargetName="Expander" Value="Collapsed"/> 
</Trigger> 

这应该为你做它。默认情况下,系统为exapander留下19个像素的空间。由于膨胀机在叶级不需要,该区域应该被折叠,而不是隐藏。

+0

此技术的唯一问题是,当您单击具有应用边距的“TreeViewItem”时,背景不会随其移动。所以你最终的背景颜色没有应用边距。 – gcso

+0

我假设你正在讨论选定的TreeViewItem的突出显示。如果是这样,这是有道理的。你最好的选择可能是重写TreeViewItem风格。这会给你完整的控制权。这里是一个来自SO的示例:http://stackoverflow.com/questions/4709450/custom-wpf-treeviewitem-style-is-behaving-incorrectly-when-databound –

+1

是的,我发布的原始答案太简单了。唯一的方法就是提供一个新的TreeViewItem模板。我用正确的解决方案修改了帖子。 –