Как вы получаете уровень дерева в WPF C #? - PullRequest
3 голосов
/ 06 июля 2010

Как вы получаете уровень дерева в WPF C #?В формах Windows есть член .Level класса treeview, но, похоже, его нет для WPF C #.

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Построение модели представления.

Модель View дает вам большую гибкость с деревом, чем вы можете достичь без него. Сделайте себе одолжение, не ходите по визуальному дереву, если родительский узел не виден, он может быть виртуализирован, и ваш уровень (или глубина) будет неправильным создайте модель представления, которая упаковывает ваши данные и знает, на каком уровне она находится.

Проверьте ответы, размещенные здесь.

ответ с ссылкой один (вы добавили бы другое свойство в модель представления - уровень)

демонстрация модели в виде дерева

1 голос
/ 08 февраля 2013

Я сделал это с конвертером, потому что я хотел сделать это с <style>

<DataTrigger Binding="{Binding Parent, RelativeSource={RelativeSource Self}, Converter={StaticResource TreeViewItemConverter}}" Value="1">
         <Setter TargetName="Bd" Property="Background"  Value="Yellow"/>
</DataTrigger>

И конвертер

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if ((value as TreeView) != null)//level 1
            return 0;

        var item = (value as TreeViewItem);
        if (item != null) // level 2 and 3
            return (item.Parent as TreeViewItem)!=null ? 2 : 1;
        return 0;
    }

Это особенно полезно для многоуровневой стилизации в виде дерева

...