WPF TreeView вопрос - PullRequest
       6

WPF TreeView вопрос

0 голосов
/ 20 сентября 2011

Можно ли хранить некоторые данные в каждом элементе элемента управления TreeView?Я имею в виду, что-то полезное (например, строку), кроме текста заголовка?Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2011

Да, 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

1 голос
/ 20 сентября 2011

Это зависит от того, что вы подразумеваете под хранилищем данных ...

Если вы только что говорили о настройке пользовательского интерфейса, ответ Рэйчел выше работает.

Если вы говорите о хранении произвольных значений объектов, таких как информация о TreeViewItem, или, возможно, о связи между двумя элементами, вы можете использовать свойство Tag TreeViewItem.Например, мне пришлось написать интерфейс отображения, где два дерева, соединенные вместе, где каждый TreeViewItem из первого дерева, мог соединиться с 1 TreeViewItems второго дерева.Я использовал свойство Tag первого TreeViewItem для хранения связующего TreeViewItem.

...