2012-02-12 39 views
2

我試圖用treeview來解決問題。 我想在樹狀結點中的wrappanel內部獲取項目(UserControls)。Treeview with wrappanel - 靈活分組

-Group 
|---------------------------------------------| 
|Item Item Item Item Item Item Item Item Item | 
|---------------------------------------------| 
+Group 
+Group 

如果窗口寬度(並沿樹視圖寬度)抑制和物品不會適合一行,這些應當責令下一行。

-Group 
|-------------------------| 
|Item Item Item Item Item | 
|Item Item Item Item  | 
|-------------------------| 
+Group 
+Group 

我已經完成上面的例子,不會把項目放在下一行。這是工作無樹視圖,但樹視圖節點內部缺少的東西..

<DataTemplate x:Key="GroupTemplateFrontPage"> 
     <Border BorderBrush="AliceBlue" BorderThickness="1" CornerRadius="10" 
       Background="{StaticResource TreeViewItemBackground}" > 
      <Expander HeaderTemplate="{DynamicResource HeaderTemplate}" 
         Header="{Binding}" IsTabStop="False" HorizontalAlignment="Left" 
         IsEnabled="True" ExpandDirection="Down" IsExpanded="True"> 
       <Grid Margin="5,5,5,5"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition /> 
        </Grid.ColumnDefinitions> 
        <ListBox Margin="10,39,0,0" VerticalAlignment="Top" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding Modems}"> 
        <ListBox.ItemsPanel> 
         <ItemsPanelTemplate> 
          <WrapPanel          
           HorizontalAlignment="Stretch" 
           ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
           ScrollViewer.VerticalScrollBarVisibility="Disabled"/> 
         </ItemsPanelTemplate> 
        </ListBox.ItemsPanel> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <Grid> 
           <Controls:UserControlItem Margin="4" /> 
          </Grid> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
        </ListBox> 
       </Grid> 
      </Expander> 
     </Border> 
    </DataTemplate> 





     <StackPanel Orientation="Vertical"> 
      <TextBlock Text="Treeview" /> 
      <TreeView Name="_treeView" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       Margin="0,0,0,0" 
       ItemsSource="{Binding}" 
       ItemTemplate="{StaticResource GroupTemplateFrontPage}" /> 
     </StackPanel> 

回答

1

設置ItemsPanelTreeViewItems應該做的:

<TreeView.ItemContainerStyle> 
    <Style TargetType="TreeViewItem"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <WrapPanel /> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</TreeView.ItemContainerStyle> 

還要關閉水平滾動允許包裝:

<TreeView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ...> 
+0

對我來說同樣的問題,這種方式工作(http://stackoverflow.com/questions/8783457/using-a-wrappanel-in-a-treeview) – GameAlchemist 2012-02-12 23:58:26