2014-10-20 159 views
0

在我的程序中,我有一個TreeView作爲視圖元素,將節點顯示爲字符串。我想在每個節點之間增加更多的空間(基本上是這樣做的,以免縮小)。有沒有辦法通過xaml來做到這一點?我瀏覽了TreeView control的所有房產,並沒有找到相應的房產。如果我不能這樣做是xaml,我將如何在C#中進行操作?如何編輯TreeView節點的間距

這是我的風格TreeView執行:

<Style TargetType="TreeViewItem" > 
     <Setter Property="IsExpanded" Value="{Binding IsExpanded}" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding HasCommands}" Value="False"> 
        <Setter Property="ContextMenu" Value="{StaticResource TreeViewEmptyMenu}" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding HasCommands}" Value="True"> 
        <Setter Property="ContextMenu" Value="{StaticResource TreeViewItemContextMenu}"/> 
       </DataTrigger> 
       </Style.Triggers> 
</Style> 

更新:右鍵單擊選項使用@克里斯W.的回答

enter image description here

+0

根據您希望額外間距位於選擇邊界內還是外部,可以分別設置自定義的「ItemTemplate」或「ItemContainerStyle」(帶有「Template」)。 – 2014-10-20 20:04:02

+0

@MikeStrobel很高興我不是唯一一個習慣於把答案作爲評論的人,並且在前面提到貪婪點:)但是我也會把它放在那裏,我的回答更多的是把它作爲一個全球性的東西來忘記它,對於只使用快速指定的ItemTemplate的實例,您肯定會更好。乾杯 – 2014-10-20 20:24:13

+0

嘿傢伙,非常感謝迄今爲止的幫助。我想我寧願選擇在這個'treeView'的特定實例上進行更改,因爲我不想在我的程序中影響其他'treeViews'。 「ItemTemplate」的解決方案聽起來不錯,因爲那時我可能只是在樹的xaml中進行更改。據說,我實際上並不知道要告訴「treeView」如何以不同的方式來分隔行的代碼。你們中的任何一個人能夠分享一個例子嗎? – 2014-10-22 17:08:48

回答

0

所以,如果我們去看看default template我們在那裏看到一個ContentPresenter和一個ItemsPresenter你可以去設置一個硬值邊緣像Margin="0,5"或任何你需要的空間。或者將其綁定到模板,以便您可以在實例中輸入內聯值。

只需在文檔大綱或設計編輯器中快速右擊您的TreeView,然後選擇編輯模板 - >編輯當前或編輯一個副本,您就可以達到此目的,或者您應該能夠擊中該項目通過選擇編輯其他模板 - >編輯項目,如果您執行編輯當前項目,您將編輯基本默認模板,如果您選擇創建副本,則會將該樣式模板顯式指定給實例。 XAML只應該在這裏需要,否則沒有代碼,並且它很容易被謾罵。

希望這會有所幫助,歡呼聲。

+0

在回答的第二部分中,您將討論將樣式模板明確分配給我正在處理的'treeView'實例。這對我來說是完美的!唯一的問題是,當我在設計編輯器中雙擊'treeView'時,我沒有看到像您所談論的那樣的「編輯模板」選項。我會在我的問題中添加一個下拉菜單的屏幕截圖。 – 2014-10-22 17:42:56

+0

右鍵單擊不是雙擊,如果您使用的是VS2012 +,那麼它應該就會出現在彈出的上下文菜單上,但如果您使用的是VS2010,那麼您可以使用Expression Blend執行相同的操作。從你的圖片也許你使用VS2010? – 2014-10-22 21:37:06

+0

正確,我在VS2010。 – 2014-10-23 16:12:21