带按钮的树视图多层自定义模板

本文关键字:自定义 视图 按钮 | 更新日期: 2023-09-27 18:05:08

我正在尝试在WPF和c#中构建一个模板。我的问题是,我想为每个项目的水平应用不同的模板。我的意思是,第一个道具关卡将与第二个关卡的道具有所不同。我不知道如何做到这一点与模板和绑定,因为我是新的技术。我还试图将按钮添加到特定的treeviewItems级别,这样我就可以发射事件或命令…我知道这个问题很过分,但我希望有人能给我一点提示,或者至少是可能的。谢谢。

带按钮的树视图多层自定义模板

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

HierarchicalDataTemplate也具有ItemTemplate属性…你可以用它

看到这个……http://blogs.msdn.com/b/chkoenig/archive/2008/05/24/hierarchical-databinding-in-wpf.aspx