Я пытаюсь поместить TreeView внутри ComboBox в WPF, чтобы при удалении комбинированного окна вместо плоского списка пользователь получал иерархический список, и любой выбранный им узел становился выбранным значением ComboBox.
Я довольно долго искал, как этого добиться, но лучшее, что я смог найти, - это только кусочки потенциальных уловок, которые, потому что я смехотворно новичок в WPF, не могли заставить работать.
У меня достаточно знаний о WPF и привязке данных, чтобы я мог получить свои данные в виде дерева и даже получить вид дерева внутри поля со списком, однако то, что я смог выполнить, не работает должным образом. Я приложил скриншот, чтобы показать, что я имею в виду. На снимке экрана поле со списком «открыто», поэтому в виде дерева внизу я могу выбрать узел, а в виде сверху «сверху» рисуется верхняя часть поля со списком, где я хочу текст / значение выбранного узла в отображаемом дереве.
По сути, я не знаю, как это сделать, - как получить текущий выбранный узел древовидной структуры, чтобы он возвращал свое значение обратно в комбинированный список, который затем использует его в качестве выбранного значения?
Вот код xaml, который я сейчас использую:
<ComboBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Top">
<ComboBoxItem>
<TreeView ItemsSource="{Binding Children}" x:Name="TheTree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type Core:LookupGroupItem}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=Display}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</ComboBoxItem>
</ComboBox>
Снимок экрана: