Добавить пользовательский заголовок в WPF Treeview - PullRequest
1 голос
/ 29 декабря 2010

У меня есть элемент управления деревом в приложении WPF, у которого есть 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 строк, причем нижняя строка представляла собой этот специальный заголовок - это сработало, но проблема заключалась в том, что расширитель всегда располагался вертикально по центру и не выравнивался с «корнем».

Есть идеи, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...