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