2011-04-03 46 views
1

我正在嘗試實現在每個層次結構底部都有頁腳部分的treeView,以便用戶可以輕鬆地將項目添加到底部。如何在分層數據模板上製作頁腳部分

喜歡的東西

<TreeView> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate DataType="local:MyNestedType" 
             ItemsSource="{Binding Items}"> 
       <StackPanel> 
        <Label Content="{Binding NodeName}" /> 
        <!--Nested Items here--> 
        <Button Content="Add New Item" /> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
     </TreeView.Resources> 
    </TreeView> 

我怎樣才能做到這一點。

回答

1

答案並不漂亮,但它是可行的。

您必須覆蓋TreeViewItemContainerStyle,並定義一個控件模板。

http://msdn.microsoft.com/en-us/library/ms788727.aspx

在這個例子中,你將看到TreeViewItem控制模板有一些XAML這樣的:

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition MinWidth="19" Width="Auto"/> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition/> 
    </Grid.RowDefinitions> 
    <ToggleButton x:Name="Expander" 
      Style="{StaticResource ExpandCollapseToggleStyle}" 
      IsChecked="{Binding Path=IsExpanded, 
         RelativeSource={RelativeSource TemplatedParent}}" 
      ClickMode="Press"/> 
    <Border Name="Bd" 
     Grid.Column="1" 
     Background="{TemplateBinding Background}" 
     BorderBrush="{TemplateBinding BorderBrush}" 
     BorderThickness="{TemplateBinding BorderThickness}" 
     Padding="{TemplateBinding Padding}"> 
    <ContentPresenter x:Name="PART_Header" 
       ContentSource="Header" 
       HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/> 
    </Border> 
    <ItemsPresenter x:Name="ItemsHost" 
      Grid.Row="1" 
      Grid.Column="1" 
      Grid.ColumnSpan="2"/> 
</Grid> 

這XAML定義瞭如何子項目顯示相對於父項目 - 下ItemsPresenter你可以插入你的頁腳。

+0

不得不添加樣式選擇器,以便添加按鈕不會出現在葉節點下。否則,完美。謝謝! – PeterM 2011-04-03 14:15:06