带按钮的树视图多层自定义模板
本文关键字:自定义 视图 按钮 | 更新日期: 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