让我首先说我之前没有使用WPF或Silverlight,除了在2009年做一个简单的教程之外,我唯一的前任...
我要做的是显示一个树视图,在根级别包含一个DataStoreType
类,在它们下面,它们是关联的DataStoreEntry
类...但是按需加载。
课程本身看起来像这样:
public class DataStoreType
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class DataStoreEntry
{
public int Id { get; set; }
public int TypeId { get; set; } // Link back to the parent DataStoreType
public string Name { get; set; }
public DateTime Imported { get; set; }
public DateTime? AvailableFrom { get; set; }
public string Description { get; set; }
}
这些项目来自一系列存储库,它们不在对象本身的任何类型的子集合中,因此调用它们来获取它们 需要在这些存储库上进行。
理想情况下,我也想了解使用MVVM模式......但是非常感谢任何帮助/示例!
谢谢,
基隆
答案 0 :(得分:3)
答案 1 :(得分:2)
这不是一个完整的答案,只是提示你开始。
<TreeView ItemsSource="{Binding DataStoreTypes}">
<TreeView.Resources>
<HierarchicalDataTemplate
DataType="{x:Type DataStoreType}"
ItemsSource="{Binding Converter={StaticResource TypeToEntriesConverter}}">
<TextBlock Text="{Binding}"/>
</HierarchicalDataTemplate>
<DataTemplate
DataType="{x:Type DataStoreEntry}">
<TextBlock Text="{Binding}"/>
</DataTemplate>
</TreeView.Resources>
</TreeView>
现在,您要做的就是实现一个IValueConverter,将DataStoreType
转换为IEnumerable<DataStoreEntry>
,并将其放在名为 TypeToEntriesConverter 的资源中。