Можно ли хранить некоторые данные в каждом элементе элемента управления TreeView? То есть что-то полезное (например, строка) помимо текста заголовка? Спасибо.
Вопрос WPF TreeView
Ответы (2)
Это зависит от того, что вы подразумеваете под данными магазина ...
Если вы просто говорите о настройке пользовательского интерфейса, ответ Рэйчел выше работает.
Если вы говорите о хранении произвольных значений объекта, таких как информация о TreeViewItem, или, возможно, о связи между двумя элементами, вы можете использовать свойство Tag для TreeViewItem. Например, мне пришлось написать интерфейс сопоставления, в котором два дерева связаны вместе, где каждый TreeViewItem из первого дерева может подключаться к 1 TreeViewItems второго дерева. Я использовал свойство Tag первого TreeViewItem для хранения подключающегося TreeViewItem.
Да, WPF «не выглядит», поэтому ваши фактические данные могут быть любыми, какими вы хотите, а TreeView
- это просто Template
, используемый для отображения данных пользователю заранее определенным образом.
Вы можете перезаписать любую часть этого Template
, как хотите, и / или привязать ее к вашим данным, как хотите.
Изменить
Я не специалист по использованию TreeView, но если бы у вас был DataContext List<Folder>
, и каждый объект Folder
имел свойства Name
и FullPath
, ваш TreeView мог бы выглядеть примерно так:
<TreeView ItemsSource="{Binding MyFolderList}">
<TreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"
ToolTip="{Binding FullPath}" />
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Если вы еще этого не сделали, я настоятельно рекомендую изучить шаблон проектирования MVVM при работе с WPF. По сути, ваше приложение - это ваши классы (ViewModels), а Controls / XAML (Views) - это просто красивый слой, который находится поверх ваших классов, чтобы сделать их удобными для пользователя.
Это важная концепция при переключении с WinForms TreeView на WPF TreeView.