标签: hierarchicaldatatemplate

当 IsSelected 和 TreeView 中使用的两种类型时更改 TreeViewItem 模板

在我的 TreeView 中,我使用两个不同的类进行绑定。例如,我有一个组,可以有 ChildGroup 并且可以有 Items。该类的示例代码:

using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace WpfApplication1
{
public class Group
{
    public Group(string name)
    {
        Name = name;
        items = new ObservableCollection<Item>();
        groups = new ObservableCollection<Group>();
    }
    public string Name { get;
        set;
    }

    private ObservableCollection<Item> items;
    private ObservableCollection<Group> groups;

    public ObservableCollection<Item> Items
    {
        get { return items; }
    }


    public ObservableCollection<Group> Groups
    {
        get { return groups; }
    }

    public IEnumerable<object> AllItems
    {
        get
        {
            foreach (var group in groups)
            {
                yield return …
Run Code Online (Sandbox Code Playgroud)

wpf treeview datatemplate hierarchicaldatatemplate

4
推荐指数
1
解决办法
5861
查看次数

如何重用 HierarchicalDataTemplate?

我有两个相同的 HierarchicalDataTemplates。唯一的区别是模板的数据类型。

<HierarchicalDataTemplate DataType="{x:Type Data:OuterType}"
                          ItemsSource="{Binding Items}">
    <StackPanel>...</StackPanel>
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type Data:InnerType}"
                          ItemsSource="{Binding Items}">
    <StackPanel>...</StackPanel>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

如何避免在两个数据模板中复制堆栈面板的内容?

我考虑将 StackPanel 变成一个用户控件,但这是唯一可以使用该控件的地方。我宁愿 StackPanel 是某种资源,但我不知道如何使它工作。

wpf xaml hierarchicaldatatemplate

4
推荐指数
1
解决办法
678
查看次数

如何在ItemsSource =自定义对象集合时选择/展开TreeView节点?

TreeView打算在两个级别上操作.对于他我有两个HierarchicalDataTemplate和两个自定义类型.在ItemsSource链接到ObservableCollection,一切工作正常.我无法想象如何从代码隐藏中选择或扩展节点.在某处提到了一个非常好的想法,即绑定IsExpandedIsSelected属性到我的自定义类型中的相应属性.唯一的问题是HierarchicalDataTemplate没有TreeViewItem直接实现,所以如何在以下代码中访问这些属性?

<TreeView Name="treeViewNotes" AllowDrop="True" PreviewMouseLeftButtonDown="treeViewNotes_PreviewMouseLeftButtonDown" PreviewMouseMove="treeViewNotes_PreviewMouseMove" Drop="treeViewNotes_Drop" DragEnter="treeViewNotes_DragEnter">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type dataclasses:NoteFolder}" ItemsSource="{Binding Notes}">
            <StackPanel Orientation="Horizontal">
                <Image Height="16" Source="{Binding TreeViewIcon}" Tag="{Binding Self}"/>
                <TextBlock Text="{Binding Title}" Tag="{Binding Self}" Margin="3"/>
            </StackPanel>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type dataclasses:Note}">
            <StackPanel Orientation="Horizontal">
                <Image Height="16" Source="{Binding TreeViewIcon}" Tag="{Binding Self}"/>
                <TextBlock Text="{Binding Title}" Tag="{Binding Self}" Margin="3"/>
            </StackPanel>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

我的目标是创建和添加新的时候Note一些NoteFolder,使这个Note选择和Folder扩展.同样需要进一步改进拖放时的UI响应.

c# data-binding wpf treeview hierarchicaldatatemplate

4
推荐指数
1
解决办法
2854
查看次数

TreeView HierarchicalDataTemplate 不应用 ItemContainerStyle

我尝试使用 TreeView 显示分层数据,并且我想为不同的子类型设置不同的数据模板。

但问题是,我的风格没有得到应用。

也许这是一个非常简单的错误,但我真的没有找到它。

<TreeView ItemsSource="{Binding List}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:Main}" ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding Property1}"/>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type local:Type2}">
            <HierarchicalDataTemplate.ItemContainerStyle>
                <Style TargetType="TreeViewItem">
                    <Setter Property="IsExpanded" Value="True"/>
                </Style>
            </HierarchicalDataTemplate.ItemContainerStyle>
            <TextBlock Text="{Binding Property2}"/>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type local:Type3}">
            <HierarchicalDataTemplate.ItemContainerStyle>
                <Style TargetType="TreeViewItem">
                    <Setter Property="IsExpanded" Value="False"/>
                </Style>
            </HierarchicalDataTemplate.ItemContainerStyle>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

wpf treeview xaml hierarchicaldatatemplate itemcontainerstyle

4
推荐指数
1
解决办法
4528
查看次数

Bind a Wpf HierarchicalDataTemplate ItemsSource to a CollectionViewSource in a dictionary?

I'm trying to display a Wpf Treeview with items sorted by a CollectionViewSource.

Currently, everything is working except sorting using this code in my resource dictionary:

<HierarchicalDataTemplate DataType="{x:Type books:Container}" ItemsSource="{Binding Path=Items}">
    <nav:ContainerControl />
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

What would be the syntax for changing the HierarchicalDataTemplate to bind to a CollectionViewSource that in turn pulls from the Items property?

I've tried variations of the code posted on Bea Stollnitz's blog with no success. I can't figure out how to set the source of …

data-binding wpf hierarchicaldatatemplate collectionviewsource

3
推荐指数
1
解决办法
4691
查看次数

WPF TreeView HierarchicalDataTemplate - 绑定到具有不同子集合的对象

我正在尝试TreeView使用数据模板将集合绑定到wpf 控件.集合中的每个项目(人物)还包含两种不同的汽车和书籍集合(汽车,书籍).

这是节省空间所涉及的对象的简化列表.

public class Person
{
  public string Name
  public List<Book> Books;
  public List<Car> Cars;
}

public class Book
{
  public string Title
  public string Author
}

public class Car
{
  public string Manufacturer;
  public string Model;
}
Run Code Online (Sandbox Code Playgroud)

这就是我的约束力

    public MainWindow()
    {
        InitializeComponent();

        this.treeView1.ItemsSource = this.PersonList();
    }

    public List<Person> PersonList()
    {
        List<Person> list = new List<Person>();


        Book eco = new Book { Title = "Economics 101", Author = "Adam Smith"};
        Book design = new Book { Title …
Run Code Online (Sandbox Code Playgroud)

wpf treeview hierarchicaldatatemplate

3
推荐指数
1
解决办法
7383
查看次数

HierarchicalDataTemplate不显示任何子项 - 为什么不呢?

我正在尝试HierarchicalDataTemplate将嵌套数据绑定到WPF 的绝对最简单的用法TreeView.出于某种原因,我的树的孩子看不见:

                                                在此输入图像描述

这是整个XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:src="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="525">
    <TreeView Name="ctTree">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType = "{x:Type src:MyClass}"
                                      ItemsSource = "{Binding Path=Children}">
                <TextBlock Text="{Binding Path=Name}"/>
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>
</Window>
Run Code Online (Sandbox Code Playgroud)

除了使用和命名空间之外,这里有C#的全部内容:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var collection = new ObservableCollection<MyClass>
        {
            new MyClass { Name …
Run Code Online (Sandbox Code Playgroud)

wpf hierarchicaldatatemplate

3
推荐指数
1
解决办法
1561
查看次数

使用HierarchicalDataTemplate显示混合类型

我试图使用HierarchicalDataTemplate显示混合类型的树视图,但到目前为止我的所有尝试都失败了..

我有一个类似树的班级,可以有两种不同类型的孩子.(位置和设备).为了让事情变得可以理解,我想要展示的是:

->Location 1
    |
    |--->Device 1.1
    |--->Device 1.2
    |--->Location 1.2
          |
          |---->Device 1.2.1 
          |---->Location 1.2.1
            .....etc.....
Run Code Online (Sandbox Code Playgroud)

我尝试了很多我找到的解决方案,但都没有效果.在大多数情况下,我只是在树视图中获取类名.我正在尝试使用HierarchicalDataTemplate做什么?如果是,请让我知道如何.

wpf treeview hierarchicaldatatemplate

3
推荐指数
1
解决办法
6479
查看次数

如何在 WPF 中使用数据绑定创建无限深度的 TreeView?

我需要创建一个具有无限父子层次结构的 TreeView。TreeView 需要绑定到名为 的列表ResourceList,并从名为 的列表中提取其子资源Children。所有项目都是同一类型。

这是我到目前为止的 XAML 代码:

    <TreeView ItemsSource="{Binding ResourceList}" Grid.Column="0" Grid.Row="2" x:Name="ResourcesTree" SelectedItemChanged="ResourcesTree_OnSelectedItemChanged" Margin="0,4,0,0">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <TextBlock Text="{Binding Name}" />
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                        <HierarchicalDataTemplate.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}" />
                            </DataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
Run Code Online (Sandbox Code Playgroud)

它有效,但问题是,它只深入三层。我应该改变什么才能使其无限?

如果它很重要,我将使用 C# 和 .NET 作为隐藏代码。

.net wpf treeview xaml hierarchicaldatatemplate

3
推荐指数
1
解决办法
1670
查看次数

WPF:绑定到选定的TreeViewItem

我有一个TreeView建立在XML文件上的文件,每个文件都包含一个文本和一个图像 TreeViewItem.此外,我有一个TextBlock和一个Image,我想绑定到选定的TreeViewItem.

我怎样才能做到这一点?

这是我的XAML:

<Window.Resources>
<HierarchicalDataTemplate DataType="Node" ItemsSource ="{Binding XPath=ChildNode}">
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding XPath=@Image}"/>
        <TextBlock Text="{Binding XPath=@Name}" />
    </StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="ChildNode" ItemsSource ="{Binding XPath=GrandchildNode}">
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding XPath=@Image}" />
        <TextBlock Text="{Binding XPath=@Name}" />
    </StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="GrandchildNode">
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding XPath=@Image}" />
        <TextBlock Text="{Binding XPath=@Name}" />
    </StackPanel>
</DataTemplate>
<XmlDataProvider x:Key="xmlNodeList" Source="XMLFile1.xml" XPath="Root"/></Window.Resources><StackPanel>
<TreeView Name="treeView1" ItemsSource="{Binding Source={StaticResource xmlNodeList}, XPath=Node}" />
<TextBlock />
<Image /></StackPanel>
Run Code Online (Sandbox Code Playgroud)

这是一个XML数据:

<Root>
<Node Name="AAA" …
Run Code Online (Sandbox Code Playgroud)

wpf treeview binding hierarchicaldatatemplate

2
推荐指数
1
解决办法
7321
查看次数