【发布时间】:2013-12-06 07:31:42
【问题描述】:
我有下面的递归数据结构,我想将它绑定到树视图。但我不知道如何指定我的数据模板/分层数据模板。
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 会起作用吗???
标签: wpf recursion treeview datatemplate