gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:48:08 27 4
gpt4 key购买 nike

我正在尝试以绝对最简单的方式使用 HierarchicalDataTemplate 将嵌套数据绑定(bind)到 WPF TreeView。由于某种原因,我的树的 child 不可见:

enter image description here

这是整个 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>

下面是这背后的所有 C#,除了 usings 和命名空间:

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

var collection = new ObservableCollection<MyClass>
{
new MyClass { Name = "parent one" },
new MyClass { Name = "parent two" },
};
collection[0].Children.Add(new MyClass { Name = "child one" });
collection[0].Children.Add(new MyClass { Name = "child two" });
ctTree.ItemsSource = collection;
}
}

class MyClass
{
public string Name { get; set; }
public ObservableCollection<MyClass> Children
= new ObservableCollection<MyClass>();
}

请注意,数据模板确实适用于项目:数据取自 Name 属性,如果模板不适用,则会显示为“MyClass”。

如何让 children 展示?我似乎在做与 HierarchicalDataTemplate 上的所有示例完全相同的事情。

最佳答案

MyClass.Children 是一个字段,而不是一个属性。你不能绑定(bind)到一个字段,将 Children 字段转换为一个属性,然后一切都应该工作:

class MyClass
{
public string Name { get; set; }
public ObservableCollection<MyClass> Children { get; private set; }

public MyClass()
{
Children = new ObservableCollection<MyClass>();
}
}

关于wpf - HierarchicalDataTemplate 不显示任何子项——为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750763/

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