gpt4 book ai didi

wpf - 在 WPF TreeView 中递归绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 19:39:26 24 4
gpt4 key购买 nike

我正在尝试以递归方式绑定(bind)到 TreeView 中某个项目的子项。从我在 MSDN HierarchicalDataTemplate 上看到的内容来看,这是可行的方法,但到目前为止,我只取得了部分成功。

我的类(class):

 public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DocumentText test = new DocumentText();
this.DataContext = test;

for (int i = 1; i < 5; i++)
{
test.AddChild();
}
foreach (DocumentText t in test.Children)
{
t.AddChild();
t.AddChild();
}
}
}

partial class DocumentText
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}

public override string ToString()
{
return Name;
}

public List<DocumentText> _children;
public List<DocumentText> Children
{
get { return this._children; }
}

public DocumentText()
{
_name = "Test";
_children = new List<DocumentText>();
}

public void AddChild()
{
_children.Add(new DocumentText());
}
}

我的 XAML: 在 mainview.xaml 中:

    <Window x:Class="treetest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TreeView Name="binderPanel" DockPanel.Dock="Left"
MinWidth="150" MaxWidth="250" Background="LightGray"
ItemsSource="{Binding Children}">
</TreeView>
</Grid>
</Window>

在 app.xaml 中:

    <HierarchicalDataTemplate x:Key="BinderTemplate"
DataType="{x:Type src:DocumentText}" ItemsSource="{Binding Path=/Children}">
<TreeViewItem Header="{Binding}"/>
</HierarchicalDataTemplate>

此代码生成第一个子项的列表,但不显示嵌套的子项。

最佳答案

您发布的主要问题是您没有将 HierarchicalDataTemplate 作为 TreeView 的 ItemTemplate 连接。您需要设置 ItemTemplate="{StaticResource BinderTemplate}" 或删除 x:Key 以将模板应用于所有 DocumentText 实例。您还应该将模板中的 TreeViewItem 更改为 TextBlock - TreeViewItem 是为您生成的,您放入该模板的内容将作为 HeaderTemplate 应用于它。

关于wpf - 在 WPF TreeView 中递归绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513922/

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