将自定义标头添加到WPF Treeview

时间:2010-12-28 23:53:29

标签: wpf treeview

我在WPF应用程序中有一个treeview控件,它有3个级别 - Root,Child和Leaf。 类似的东西:

<DataTemplate DataType="{x:Type local:Leaf}">
    <Grid>
        <StackPanel Orientation="Horizontal">                     
            <CheckBox IsChecked="True" Content="LeafCheckbox" />                     
            <TextBlock Text="{Binding Path=SomeValue}"/>                 
        </StackPanel>             
    </Grid>         
</DataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Child}" ItemsSource="{Binding Children}">             
    <StackPanel Orientation="Horizontal">                 
        <TextBlock Text="Child " />                 
        <TextBlock Text="{Binding Path=SomeValue}" />             
    </StackPanel>         
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Root}" ItemsSource="{Binding Children}">             
    <Grid>                 
        <StackPanel Orientation="Horizontal">                     
            <TextBlock Text="Root " />                     
            <TextBlock Text="{Binding Path=SomeValue}" />                 
        </StackPanel>            
    </Grid>        
</HierarchicalDataTemplate> 

我的设计要求有一个自定义标题,可以取消选中所有内容,如下所示:

alt text

在与此斗争之后,我尝试使用唯一名称向有界列表的第一个索引添加一个叶子,并在XAML中以不同方式处理它和皮肤。这样的工作,但它搞砸了列表,它只是变得太毛茸茸无法处理 - 一个丑陋的黑客的定义。 我还考虑过更改实际的HierarchicalDataTemplate,让它使用2行网格,最下面一行是特殊标题 - 虽然有效,但问题是扩展器总是垂直居中而不与“Root”对齐。 / p>

任何想法如何很好地做到这一点?

0 个答案:

没有答案