2011-07-06 38 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模板。我用正確的解決方案修改了帖子。 –