ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 如何使用WPF绘制二叉树视图?

2019-06-30 11:05:51  阅读:312  来源: 互联网

标签:c net data-binding wpf binary-tree


我想像这样画出它:

我可以在控制台上绘制二叉树.我想用WPF绘制它.这是我为控制台编写的代码.

class Program
{
    static void Main(string[] args)
    {
        List<BinaryTreeData> myBinaryData = new List<BinaryTreeData>();
        myBinaryData.Add(new BinaryTreeData{ownID=1});
        myBinaryData.Add(new BinaryTreeData { parentID=1, ownID = 2 });
        myBinaryData.Add(new BinaryTreeData {  parentID=1,ownID = 3 });

        foreach (var item in myBinaryData)
        {
            Console.WriteLine("{0}------{1}", item.parentID, item.ownID);   
        }
    }
}

class BinaryTreeData : INotifyPropertyChanged
{
    private int _ownID;
    private int _parentID;

    public int ownID
    {
        get { return this._ownID; }
        set { this._ownID = value; this.onChange("ownID"); }
    }

    public int parentID
    {
        get { return this._parentID; }
        set { this._parentID = value;  this.onChange("parentID"); }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void onChange(string propertyName)
    {
        if (PropertyChanged!=null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
} 

我不明白我该怎么做.

解决方法:

每个树节点都需要有一个子集合.如果要将其限制为二叉树,则可以将子集合限制为最多2个项目.

我会推荐本教程,因为它还将向您展示如何使用MVVM实现此目的.

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

编辑:

既然你已经更新了你的帖子,看起来你正在寻找不同的东西,我认为你最好使用第三方解决方案,而不是实现自己的.

试着看看这些解决方案 –

http://www.codeproject.com/KB/WPF/LayeredTreeDraw.aspx

http://www.codeproject.com/KB/WPF/CustomTreeViewLayout.aspx

标签:c,net,data-binding,wpf,binary-tree
来源: https://codeday.me/bug/20190630/1336011.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有