TreeView多级自定义模板与按钮

时间:2011-08-10 05:03:14

标签: c# wpf templates treeview

我正在尝试为WPF和c#中的treeView构建模板。我的问题是我想为每个项目级别应用不同的模板。 我的意思是第一个项目级别与第二级项目看起来不同。 我不知道如何使用模板和绑定来做到这一点,因为我是这项技术的新手。 我也试图将按钮添加到某个treeviewItems级别,这样我就可以触发事件或命令...... 我知道这有很多要问,但我希望有人会给我一个线索,或者至少是否有可能。 感谢。

2 个答案:

答案 0 :(得分:1)

假设所有对象的类型相同,我可以看到实现此目的的两种方法是使用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.");
    }
}

答案 1 :(得分:0)

HierarchicalDataTemplate也有ItemTemplate属性......您可以使用它。

看到这个......

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