TreeView многоуровневый пользовательский шаблон с кнопками - PullRequest
2 голосов
/ 10 августа 2011

Я пытаюсь построить шаблон для treeView в WPF и c #.Моя проблема в том, что я хочу применить разные шаблоны для каждого уровня элементов.Я имею в виду, что первый уровень предмета будет отличаться от предметов второго уровня.Я не знаю, как это сделать с помощью шаблонов и привязок, так как я новичок в этой технологии.Я также пытаюсь добавить кнопки к определенному уровню treeviewItems, чтобы я мог запускать события или команды ... Я знаю, что это много, чтобы спросить, но я надеюсь, что кто-то даст мне подсказку об этом или, по крайней мере, если это возможноили нет.Спасибо.

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Предполагая, что все объекты относятся к одному и тому же типу, я вижу два метода для достижения этого: использовать свойства ItemTemplate или ItemTemplateSelector.

Лично я предпочитаю подход XAML, который заключается в использовании свойства ItemTemplate.

В шаблоне вы бы указали триггеры для изменения внешнего вида в зависимости от уровня, на котором находится предмет. Чтобы получить этот уровень, вы можете указать конвертер, подобный следующему:

public class TreeViewItemToLevelConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (!(value is DependencyObject))
            return 0;

        return findLevel(value as DependencyObject, -1);
    }

    private int findLevel(DependencyObject tvi, int level)
    {
        DependencyObject tv = ItemsControl.ItemsControlFromItemContainer(tvi) as DependencyObject;

        if (tv != null)
            return findLevel(tv, level + 1);
        else
            return level;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new Exception("The method or operation is not implemented.");
    }
}
0 голосов
/ 10 августа 2011

HierarchicalDataTemplate также имеет свойство ItemTemplate ... вы можете использовать его.

посмотреть это ...

http://blogs.msdn.com/b/chkoenig/archive/2008/05/24/hierarchical-databinding-in-wpf.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...