2017-09-02 81 views
0

對WPF很新穎。如何防止TreeView的DataTemplate導致控件水平展開?

  <TreeView Grid.Column="0" x:Name="DataTree" MinWidth="175" BorderThickness="0"> 
       <TreeView.Resources> 
        <HierarchicalDataTemplate DataType="{x:Type self:DispatchTreeTerritoryItem}" ItemsSource="{Binding ClientLocations}"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Name}" /> 
         </StackPanel> 
        </HierarchicalDataTemplate> 
        <DataTemplate DataType="{x:Type self:DispatchTreeClientLocationItem}"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding ClientName,StringFormat='({0}) '}" /> 
          <TextBlock Text="{Binding Address}" /> 
         </StackPanel> 
        </DataTemplate> 
       </TreeView.Resources> 
      </TreeView> 

DispatchTreeClientlocationItem性質(ClientNameAddress)的數據,不要在樹視圖的寬度內配合。所以當創建這些項目時,treeview控件會自行水平擴展以允許所有樹節點的文本可見。

這是不希望的行爲。我希望它的行爲像WinForms TreeView那樣,文本只是在控件的邊緣被截斷。這在WPF中可能嗎?如何?

UPDATE

繼@芬克的評論和鏈接的問題,建議我的TreeView XAML現在看起來像:

<TreeView x:Name="DataTree" Grid.Column="0" MinWidth="175" BorderThickness="0" 
        ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 

我觀察到的行爲沒有任何變化。當節點文本太長以至於不能適應TreeView的水平範圍時,TreeView會水平展開以顯示所有文本。

這裏有幾個截圖來說明問題。展開領域節點時,子節點的內容會使TreeView水平展開。

collapsed treeviewexpanded treeview

+1

你可以通過在「TreeView」上設置ScrollViewer.Horizo​​ntalScrollBarVisibility =「Disabled」禁用擴展。 Ref [this](https://stackoverflow.com/questions/45776693/making-a-portion-of-a-treeviewitem-wrap)文章,進一步向前邁進。 – Funk

+0

@Funk:按照你的建議沒有產生可觀察的變化。 –

+1

@SamAxe,TreeView位於哪個容器?如果Grid和columnDefinition具有'Width =「Auto」',則擴展是預期的行爲。嘗試設置最大寬度或比例寬度 – ASh

回答

1

如果TreeView位於一個GridColumnDefinitionWidth="Auto",擴張是預期的行爲。

嘗試設置MaxWidth(上ColumnDefinition或樹視圖),或比例寬度* /固定的寬度(上ColumnDefinition)

網格行(RowDefinition)具有類似的行爲時,其高度被設定爲自動