Главная » WPF » Иерархическое связывание

0

Все примеры,  которые  мы рассматривали до сих пор, были плоскими:  список клиентов или информационных носителей. Но часто данные бывают организованы иерархически, как, например, XML документ  общего вида или файловая система. Поскольку WPF поддерживает композицию элементов, то первое, что приходит  в голову, – воспользоваться этой композицией для построения  дерева элементов.

Рис. 6.12. Связывание с помощью селектора шаблонов

Чтобы проверить эту идею, попробуем опросить файловую систему. Нам предстоит определить  простой шаблон и поместить данные в списковое поле. Поскольку значением  свойства  ItemsSource должен  быть набор, то мы возьмем начальный  каталог и обернем его в массив:

<!— filebrowser.xaml —>

<Window … Title=’EssentialWPF’>

<ListBox

ItemsSource=’{Binding}’>

<ListBox.ItemTemplate>

<DataTemplate>

<TextBlock Text=’{Binding Path=Name}’ />

</DataTemplate>

</ListBox.ItemTemplate>

</ListBox>

</Window>

// filebrowser.xaml.cs

public partial class FileBrowser : Window {

public FileBrowser() { InitializeComponent();

DataContext =

new DirectoryInfo[] { new DirectoryInfo(«c:\\windows») };

}

}

Рис. 6.16. Применение HierarchicalDataTemplate

в качестве источника данных для элемента управления TreeView

Класс  HierarchicalDataTemplate можно  использовать даже тогда, когда дан ные неоднородны. Просто для каждого типа в иерархии определяется отдельный шаблон (а не один и тот же для всех).

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии