У меня есть элемент управления деревом в приложении 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>
У моего требования к дизайну есть собственный заголовок, чтобы иметь возможность снять все, например:
После небольшой битвы,Я попытался добавить лист к первому индексу ограниченного списка с уникальным именем, а в XAML трактовать его и скин по-разному.Это сработало, но оно испортило списки и стало слишком проблематичным - определение уродливого хака.Я также подумал об изменении фактического HierarchicalDataTemplate, при котором он использовал сетку из 2 строк, причем нижняя строка представляла собой этот специальный заголовок - это сработало, но проблема заключалась в том, что расширитель всегда располагался вертикально по центру и не выравнивался с «корнем».
Есть идеи, как это сделать?