Имам прозорец, който съдържа решетка с две колони. първата колона се попълва с TreeView. втората колона се попълва с ListBox.
И двата контрола са свързани с CollectionViewобгръща моите данни - ObserveableCollection от типа на моя клас данни. ListBox е настроен да се синхронизира с изгледа (SyncToCurrentItem и т.н.). Също така внедрих персонализиран ListBoxItem, който извиква BringIntoView и фокусиране върху новоизбрания елемент.
Въпреки това, Treeview не поддържа такива операции срещу CollectionView.
Има ли начин да се постигне това? Това, което искам да направя, е да избера нещо в дървото и да го избера в ListBox.
Благодаря предварително за всяка помощ.
Отговори:
4 за отговор № 1За да поддържате ListBox в синхрон с TreeView,Вие трябва да го свържете с 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, но е възможно. Кажете ми, ако се опитвате да отидете в двете посоки.