为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式绑定到树视图在 UWP 中不起作用

以编程方式绑定到树视图在 UWP 中不起作用

C#
慕标琳琳 2023-08-13 15:41:28
我正在按照这篇文章尝试以编程方式将数据绑定到树视图(我在 1903)。在一个全新的 UWP 应用程序中,我有以下代码:public MainPage(){    this.InitializeComponent();    var items = new List<Item>();    var rootItem = new Item();    rootItem.Name = "Root Item";    rootItem.Children.Add(new Item() { Name = "test child 1" });    items.Add(rootItem);    var treeView = new TreeView();    treeView.ItemsSource = items;    stackPanel.Children.Add(treeView);}Item看起来像这样:public class Item{    public string Name { get; set; }    public ObservableCollection<Item> Children { get; set; } = new ObservableCollection<Item>();    public override string ToString()    {        return Name;    }}这似乎与上面文章中概述的结构完全相同。但是,当我运行该应用程序时,我得到以下信息:我的猜测是我需要做一些事情,或者设置一些东西来告诉这个树视图,或者它有子项的集合 - 但我看不出那可能是什么。
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

您应该按照文档ItemTemplate中的说明创建一个。

您可以使用XamlReader类以编程方式执行此操作。像这样的东西:

const string Xaml = "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><TreeViewItem ItemsSource=\"{Binding Children}\" Content=\"{Binding Name}\"/></DataTemplate>";
treeView.ItemTemplate = XamlReader.Load(Xaml) as DataTemplate;


查看完整回答
反对 回复 2023-08-13
?
三国纷争

TA贡献1804条经验 获得超7个赞

如果你使用C#构建TreeView,我建议使用遍历的方式添加TreeViewNode。


由于缺少指示,TreeView 不会自动处理 Item 的 Children。在您提供的文档中,TreeView 有一个DataTemplate指令,因此子级可以渲染。


您可以像这样更改代码:


public MainPage()

{

    this.InitializeComponent();

    var items = new List<Item>();

    var rootItem = new Item();

    rootItem.Name = "Root Item";

    rootItem.Children.Add(new Item() { Name = "test child 1" });

    items.Add(rootItem);

    var treeView = new TreeView();


    foreach (var root in items)

    {

        var rootNode = new TreeViewNode() { Content = root.Name };

        if (root.Children.Count > 0)

        {

            foreach (var child in root.Children)

            {

                rootNode.Children.Add(new TreeViewNode() { Content = child.Name });

            }

        }

        treeView.RootNodes.Add(rootNode);

    }

    stackPanel.Children.Add(treeView);

}

此致。


查看完整回答
反对 回复 2023-08-13
  • 2 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信