【问题标题】:Is it possible to display a treeview with node image based on the underlying class of the node?是否可以根据节点的底层类显示带有节点图像的树视图?
【发布时间】:2014-02-19 16:27:25
【问题描述】:

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

当我尝试根据节点的类来处理与节点关联的图像时遇到了问题。根据我的谷歌搜索,我知道HierarchicalDataTemplate 是要走的路,但我似乎在我的实现中遗漏了一些东西。使用下面的代码,即使 Bookmarks 确实包含值,也不会显示任何树。

下面是我正在使用的 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>

【问题讨论】:

    标签: c# wpf mvvm treeview


    【解决方案1】:

    您不必在 DataTemplate 中使用 TreeViewItem。 TreeView 将负责创建 TreeViewItems 并使用您的模板设置它们的内容属性。 这应该有效:

     <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>
    

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2011-05-19
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      相关资源
      最近更新 更多