Я пытаюсь создать древовидный элемент управления WPF (в C #, но это не так важно), который отображает иерархический список элементов. В дополнение к этому, у каждого элемента в дереве есть список «других элементов» другого типа , которые я также хотел бы отобразить (как показано ниже).
+ Item1
- OtherItem1
- OtherItem2
+ Item2
- OtherItem3
- OtherItem4
+ Item3
+ Item4
etc...
Я бы хотел, чтобы все это было привязано к данным и поддерживало перетаскивание. У меня есть базовый список, включающий только настройку «Предмет», но у меня возникли небольшие проблемы с выяснением того, как поддерживать второй список. Если бы кто-то мог просто указать мне направление типа вещи ItemSource, которую я должен использовать, это очень помогло бы.
Мне нужен MultiBinding или что-то? Вот что я сейчас пытаюсь (но не получается).
<TreeView ItemsSource="{Binding Bones}">
<TreeView.ItemContainerStyle>
<!--
This Style binds a TreeViewItem to a BoneTreeViewModel.
-->
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:Skeleton.BoneTreeViewModel}">
<HierarchicalDataTemplate.ItemsSource>
<MultiBinding>
<Binding Path="Name" />
<Binding Path="Components" />
</MultiBinding>
</HierarchicalDataTemplate.ItemsSource>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Где Имя - это просто строка, представляющая имя элемента, а Компоненты - это (Плоская, не иерархическая) запись ReadOnlyCollection OtherItem.
Спасибо за чтение!