У меня есть структура рекурсивных данных ниже, и я хотел бы привязать ее к древовидному представлению. Но я не могу определить, как указать шаблоны данных/иерархические шаблоны данных.WPF Treeview связывается с несколькими вложенными списками
public class MediaContent
{
public MediaContent()
{
this.Sequences = new List<MediaSequence>();
this.Items = new List<MediaItem>();
}
public List<MediaSequence> Sequences
{
get;
set;
}
public List<MediaItem> Items
{
get;
set;
}
}
public class MediaSequence
{
public MediaSequence()
{
this.Sequences = new List<MediaSequence>();
this.Items = new List<MediaItem>();
}
public List<MediaSequence> Sequences
{
get;
set;
}
public List<MediaItem> Items
{
get;
set;
}
}
public class MediaItem
{
public string Filename
{
get;
set;
}
}
Трудность возникает из-за того, что каждый узел может содержать 2 списка, а списки рекурсивные. Ниже приведены примеры данных.
var uberNestedSequence = new MediaSequence();
uberNestedSequence.Items.Add(new MediaItem { Filename = "video1.mp4" });
uberNestedSequence.Items.Add(new MediaItem { Filename = "video2.avi" });
var nestedSequence = new MediaSequence();
nestedSequence.Sequences.Add(uberNestedSequence);
var nestedSequence2 = new MediaSequence();
this.Media.Sequences.Add(nestedSequence);
this.Media.Sequences.Add(nestedSequence2);
Итак, как мне отображать эти данные в виде дерева WPF?
<TreeView Margin="5" VerticalAlignment="Top" Grid.Row="1" ItemsSource="{Binding Media}">
Я пробовал нижеследующее, но, видимо, вы не можете указать 2 разных шаблона для одного и того же типа данных.
<HierarchicalDataTemplate DataType="{x:Type local:MediaSequence}" ItemsSource="{Binding Sequences}">
<TextBlock Text="sequence" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:MediaSequence}" ItemsSource="{Binding Items}">
<TextBlock Text="item" />
</HierarchicalDataTemplate>
Любая помощь приветствуется, спасибо
У вас либо есть дерево типа MediaSequence, либо MediaItem, но вы не можете иметь оба в своем дереве. –
Будет ли это работать, если вы будете использовать TemplateSelector ??? – user2799180