Используйте привязку данных.
Если содержимое представления списка хранится внутри объекта, показанного в представлении дерева, вы можете просто привязать его к свойству SelectedItem дерева.
В противном случае привяжите дерево SelectedItem к свойству в ваших моделях представления (или вашем окне!) и в установщике этого свойства измените список, который привязан к свойству ItemSource представления списка.
Вы можете увидеть технику в эта серия в моем блоге сообщение, на которое я ссылаюсь, является последним сообщением со ссылкой для скачивания кода, вам нужно будет прочитать с начала серии, если вы хотите полное объяснение.
РЕДАКТИРОВАТЬ: Вот как я сделал это в одном проекте: (определение GridView удалено, так как оно здесь не актуально)
<TreeView
Name="FolderTree"
Width="300"
ItemsSource="{Binding Root.SubFolders}"
ItemTemplate="{StaticResource FolderTemplate}"/>
<ListView
Name="FileView"
ItemsSource="{Binding ElementName=FolderTree, Path=SelectedItem.Files}">
</ListView>
Список, привязанный к ItemsSource древовидного представления, состоит из объектов, которые имеют 3 свойства: имя (которое привязано к TextBlock в FolderTemplate), вложенные папки (которое также привязано к свойству HierarchicalDataTemplate.ItemsSource) и файлы, которые привязаны к ListView используя {Binding ElementName=FolderTree, Path=SelectedItem.Files}
Обратите внимание, что ни один из списков не является наблюдаемой коллекцией (поскольку в этом проекте они никогда не меняются), а загружаются лениво (по запросу) получателями свойств (поскольку в этом проекте их загрузка требует больших затрат).
person
Nir
schedule
11.07.2010