Извиняюсь за длинный пост - Прочтите об этом несколько тем, но все еще не можете его реализовать.По сути, у меня есть коллекция объектов, определенных как:
public class LibData
{
public string Name { get; set; }
ObservableCollection<LibObject> _list;
public ObservableCollection<LibObject> List { get { return _list; } }
public LibData(string name, LibDataType type)
{
this.Name = name;
_list = new ObservableCollection<LibObject>();
}
}
и объекта:
public class LibObject
{
public string Name { get; set; }
public LibObject(string name)
{
this.Name = name;
}
}
Моя главная проблема в XAML и стилизации этого TreeView.Мне нужно иметь особый стиль для «корневого» элемента и особый стиль для «листа».Дело в том, что один элемент в связанном списке - «Root-> Leaf», а другой - «Root-> Child-> Leaf».Я попробовал это:
<TreeView x:Name="myTree" ItemsSource="{x:Static local:myDataList}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=List}" >
<Grid>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<CheckBox IsChecked="True" Content="HeaderCheckbox"/>
</StackPanel>
</Grid>
<HierarchicalDataTemplate.ItemTemplate >
<DataTemplate>
<Grid>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="True" Content="LeafCheckbox" />
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</Grid>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
Это, очевидно, прекрасно работает для элемента "Корень-> Лист", но не для элемента "Корень-ребенок-лист".Реализация XAML кажется более «жестко закодированным» решением, где я знаю, что макет элемента всегда «Root-> Leaf» - как мне сделать это динамичным?Опять же, я видел решения для разных уровней (включая использование конвертеров), но проблема, с которой я столкнулся, заключается в том, что мне нужны особые стили для корня и листа и ничего для промежуточных уровней.Мне интересно, смотрю ли я на это совершенно неправильно ...