亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以編程方式綁定到樹視圖在 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 關注
  • 191 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號