我有下面的遞歸數據結構,我想將它綁定到樹視圖。但我無法弄清楚如何指定我的數據模板/分層數據模板。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