WPF Treeview,存储库,分层数据和WPF新手

时间:2010-11-05 11:34:22

标签: wpf mvvm treeview

让我首先说我之前没有使用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模式......但是非常感谢任何帮助/示例!

谢谢,
基隆

2 个答案:

答案 0 :(得分:3)

这里找到了满足我需求的完美教程/示例。

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

涵盖视图模型并按需加载。

答案 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 的资源中。