C# WPF树视图中作为子级的两个列表
我有一个WPF树视图,它绑定到一个对象列表,每个对象中都有几个列表C# WPF树视图中作为子级的两个列表,c#,wpf,xaml,datatemplate,hierarchicaldatatemplate,C#,Wpf,Xaml,Datatemplate,Hierarchicaldatatemplate,我有一个WPF树视图,它绑定到一个对象列表,每个对象中都有几个列表 public List<OwnerClass> OwnerClasses {get; set;} public class OwnerClass { public List<SomeObject> SomeObjects { get; set; } public List<OtherObject> OtherObjects { get; set; } } 我想要treevi
public List<OwnerClass> OwnerClasses {get; set;}
public class OwnerClass
{
public List<SomeObject> SomeObjects { get; set; }
public List<OtherObject> OtherObjects { get; set; }
}
我想要treeview功能,但我想要并排的子列表。(每个视图都是树状视图,因为它们依次具有列表。)
这可能吗?您可以创建一个属性,将两个列表“连接”为一个:
public class OwnerClass
{
public List<SomeObject> SomeObjects { get; set; }
public List<OtherObject> OtherObjects { get; set; }
public object AllObjects
{
get
{
List<object> list = SomeObjects;
list.AddRange(OtherObjects);
return list;
}
}
}
公共类所有者类
{
公共列表SomeObjects{get;set;}
公共列表其他对象{get;set;}
公共对象AllObject
{
收到
{
列表=一些对象;
list.AddRange(其他对象);
退货清单;
}
}
}
要轻松做到这一点,需要两件事。@DLeh很好地演示了第一种方法,尽管我建议在使用WPF时使用observetecollection
类,而不是List
类
您需要的第二件事是层次结构数据模板
。它类似于普通的数据模板
,但允许您为子节点设置源:
<HierarchicalDataTemplate DataType="{x:Type YourXmlNamespacePrefix:OwnerClass}"
ItemsSource="{Binding AllObjects}">
<TextBlock Text="{Binding SomePropertyFromObject}"/>
</HierarchicalDataTemplate>
您可以从MSDN上的页面了解更多信息。创建适当的视图模型。将数据转换为可以在
HierarchycalDataTemplate
中使用的格式。
<HierarchicalDataTemplate DataType="{x:Type YourXmlNamespacePrefix:OwnerClass}"
ItemsSource="{Binding AllObjects}">
<TextBlock Text="{Binding SomePropertyFromObject}"/>
</HierarchicalDataTemplate>