/ / WPF Treeview - синхронізація з ViewModel? - wpf, перегляд дерев, синхронізація, список списку

WPF Treeview - синхронізація з ViewModel? - wpf, treeview, синхронізація, списокbox

У мене є вікно, яке містить сітку з двома стовпцями. перший стовпець заповнюється TreeView. другий стовпчик заповнюється ListBox.

Обидва елементи управління пов'язані з CollectionView, щозагортає мої дані - ObserveableCollection мого типу класу даних. ListBox встановлений для синхронізації з видом (SyncToCurrentItem тощо). Я також реалізував користувальницький ListBoxItem, який викликає BringIntoView і зосередити увагу на нещодавно вибраному елементі.

Однак Treeview не підтримує подібні операції проти CollectionView.

Чи є спосіб досягти цього? Що я хочу мати змогу зробити - це вибрати щось на дереві та вибрати його також у ListBox.

Заздалегідь дякую за будь-яку допомогу.

Відповіді:

4 для відповіді № 1

Щоб синхронізувати ListBox з TreeView,вам "потрібно буде прив'язати його" s SelectedItem до SelectedItem TreeView ". Режим прив'язки повинен бути OneWay, оскільки TreeView SelectedItem читається тільки. Ось приклад:

<TreeView Name="CategoryTreeView" DockPanel.Dock="Top" MinHeight="50" MinWidth="100">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="x:Type local:Category"
ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<ListBox Name="CategoryList" SelectedItem="{Binding ElementName=CategoryTreeView, Path=SelectedItem, Mode=OneWay}"/>

Я створив базовий клас категорії з ім'ям таДіти (Список). Це трохи більше роботи, щоб оновити TreeView з ListBox, але це доцільно. Дайте мені знати, чи намагаєтесь ви пройти обома способами.