我正在尝试在 WPF 和 C# 中为 treeView 构建模板。我的问题是我想为每个项目级别应用不同的模板。 我的意思是第一个项目级别看起来与第二个级别的项目不同。 我不知道如何使用模板和绑定(bind)来做到这一点,因为我是这项技术的新手。 我还试图将按钮添加到某个 treeviewItems 级别,以便我可以触发事件或命令...... 我知道这有很多问题,但我希望有人能给我一个关于这个的线索,或者至少如果可能的话。 谢谢。
最佳答案
假设所有对象都是同一类型,我可以看到实现此目的的两种方法,即使用 ItemTemplate 或 ItemTemplateSelector 属性。
我个人更喜欢使用 ItemTemplate 属性的 XAML 方法。
在模板中,您可以指定触发器以根据项目所在的层级改变外观。要获得此级别,您可以指定一个与此类似的转换器:
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.");
}
}
关于c# - 带按钮的 TreeView 多级自定义模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7006128/