【发布时间】:2011-03-12 01:47:19
【问题描述】:
如何在 WPF C# 中获取 treeviewitem 的级别?在 Windows 窗体中,treeview 类有一个 .Level 成员,但 WPF C# 似乎没有。
【问题讨论】:
标签: c# wpf treeview treeviewitem
如何在 WPF C# 中获取 treeviewitem 的级别?在 Windows 窗体中,treeview 类有一个 .Level 成员,但 WPF C# 似乎没有。
【问题讨论】:
标签: c# wpf treeview treeviewitem
构建视图模型。
与没有它的情况相比,使用树视图时,视图模型为您提供了更大的灵活性。帮自己一个忙,不要走可视化树,如果父节点不可见,它可能会被虚拟化掉,您的级别(或深度)图将是错误的。构建一个视图模型来包装您的数据并知道它处于什么级别。
查看此处发布的答案。
answer link one(您可以在视图模型中添加另一个属性 - 级别)
【讨论】:
我用转换器做的,因为我想用<style>做它
<DataTrigger Binding="{Binding Parent, RelativeSource={RelativeSource Self}, Converter={StaticResource TreeViewItemConverter}}" Value="1">
<Setter TargetName="Bd" Property="Background" Value="Yellow"/>
</DataTrigger>
还有转换器
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value as TreeView) != null)//level 1
return 0;
var item = (value as TreeViewItem);
if (item != null) // level 2 and 3
return (item.Parent as TreeViewItem)!=null ? 2 : 1;
return 0;
}
这对于树视图中的多级样式特别有用
【讨论】: