gpt4 book ai didi

WPF DataBound TreeView 展开/折叠

转载 作者:行者123 更新时间:2023-12-03 13:17:18 24 4
gpt4 key购买 nike

我只是想找到一种方法来控制 TreeView 的展开/折叠节点通过它们绑定(bind)到的对象。该对象具有 IsExpanded属性,我想用它来显示 TreeView节点本身根据该属性展开或折叠。

这是我的代码:

C#:

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

this.DataContext = new List<Parent>() { Base.GetParent("Parent 1"), Base.GetParent("Parent 2") };
}
}

public class Base
{
public string Name { get; set; }
public bool IsExpanded { get; set; }

public static Parent GetParent(string name)
{
Parent p = new Parent() { Name = name };

p.Children.Add(new Child() { Name = "Child 1", GrandChildren = new ObservableCollection<GrandChild>() { new GrandChild() { Name = "Grandchild 1" } } });
p.Children.Add(new Child() { Name = "Child 2", GrandChildren = new ObservableCollection<GrandChild>() { new GrandChild() { Name = "Grandchild 1" } } });
p.Children.Add(new Child() { Name = "Child 3", GrandChildren = new ObservableCollection<GrandChild>() { new GrandChild() { Name = "Grandchild 1" } } });

return p;
}
}

public class Parent : Base
{
public ObservableCollection<Child> Children { get; set; }

public Parent()
{
this.Children = new ObservableCollection<Child>();
}
}

public class Child : Base
{
public ObservableCollection<GrandChild> GrandChildren { get; set; }

public Child()
{
this.GrandChildren = new ObservableCollection<GrandChild>();
}
}

public class GrandChild : Base
{
}

XAML:
<Window x:Class="HeterogeneousExperimentExplorer.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:HeterogeneousTree"
Title="Window2" Height="300" Width="300">
<Window.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Parent}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Parent}" ItemsSource="{Binding GrandChildren}">
<TextBlock Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView ItemsSource="{Binding}" />
</Grid>
</Window>

最佳答案

想出了解决方案:

<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsNodeExpanded}"/>
</Style>
因此,样式获取绑定(bind)到 TreeViewItem 的对象并查看其 IsNodeExpanded 属性,并将该值分配给 TreeViewItem.IsExpanded 属性。如果添加 Mode=TwoWay,它们会相互通知(TreeViewItem 会在对象展开时通知对象)。

关于WPF DataBound TreeView 展开/折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1717654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com