2014-02-19 39 views
0

我试图教我WPF,所以请与我裸...是否有可能基于节点的基础类来显示具有节点图像的树视图?

我有一个分层集合,是代表一个目录结构,其中的任何目录可以包含目录,书签和任何书签不能包含任何。这两个类都扩展了一个基本的抽象类。

我遇到了问题,当我尝试处理基于它的类的节点相关的图像。根据我的谷歌搜索,我明白HierarchicalDataTemplate是要走的路,但我似乎错过了我的实现中的东西。使用下面的代码,即使书签确实包含值,也不会显示树。

下面是我的工作的XAML:

<TreeView 
    ItemsSource="{Binding Bookmarks}"> 
    <TreeView.Resources> 

     <!-- Directories --> 
     <HierarchicalDataTemplate 
      DataType="{x:Type BaseBookmarks:BookmarkDirectory}" 
      ItemsSource="{Binding Path=Children}"> 
      <TreeViewItem 
       Header="{Binding SimpleName}"> 
       <Image 
        Source="/MapInterface;component/icons/16x16_BookmarkFolder.png" /> 
      </TreeViewItem> 
     </HierarchicalDataTemplate> 

     <!-- Bookmarks --> 
     <HierarchicalDataTemplate 
      DataType="{x:Type BaseBookmarks:Bookmark}"> 
      <TreeViewItem 
       Header="{Binding SimpleName}"> 
       <Image 
        Source="/MapInterface;component/icons/16x16_Bookmark.png" /> 
      </TreeViewItem> 
     </HierarchicalDataTemplate> 

    </TreeView.Resources> 
</TreeView> 

回答

2

您不必使用在DataTemplate中一个TreeViewItem。 TreeView将负责创建TreeViewItem并使用模板设置其内容属性。 这应该工作:

<TreeView ItemsSource="{Binding Bookmarks}"> 
     <TreeView.Resources> 

      <!-- Directories --> 
      <HierarchicalDataTemplate DataType="{x:Type BaseBookmarks:BookmarkDirectory}" 
             ItemsSource="{Binding Path=Children}"> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="/MapInterface;component/icons/16x16_BookmarkFolder.png"/> 
        <TextBlock Text="{Binding SimpleName}"/>  
       </StackPanel> 
      </HierarchicalDataTemplate> 

      <!-- Bookmarks --> 
      <HierarchicalDataTemplate DataType="{x:Type BaseBookmarks:Bookmark}"> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="/MapInterface;component/icons/16x16_Bookmark.png" /> 
        <TextBlock Text="{Binding SimpleName}"/> 
       </StackPanel> 
      </HierarchicalDataTemplate> 

     </TreeView.Resources> 
    </TreeView> 
相关问题