Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF树视图中作为子级的两个列表_C#_Wpf_Xaml_Datatemplate_Hierarchicaldatatemplate - Fatal编程技术网

C# 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

我有一个WPF树视图,它绑定到一个对象列表,每个对象中都有几个列表

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>