首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Eto.Forms TreeGridView

如何使用Eto.Forms TreeGridView
EN

Stack Overflow用户
提问于 2018-03-18 13:36:37
回答 1查看 1.3K关注 0票数 3

我已经做了很长一段时间了,似乎不知道如何正确地呈现Eto.Forms TreeGridView控件。我现在只想添加几个GridViewItem,然后在顶部得到一个小的灰色栏:

这是我的代码:

代码语言:javascript
复制
        List<ITreeGridItem> treeGridItems = new List<ITreeGridItem>();
        foreach (var contentType in contentTypes)
        {
            treeGridItems.Add(new TreeGridItem(contentType.Name));
        }

        Content = new DocumentPage(new TreeGridView
        {
            DataStore = new TreeGridItemCollection(treeGridItems)

        }, new Padding(20));

我甚至不知道从哪里开始,我只想得到一棵树,现在每个节点都要显示文本,但我甚至无法做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 13:36:20

经过一些尝试和错误之后,我想出了如何使用树视图:

代码语言:javascript
复制
 var treeGridView = new TreeGridView
        {
            BackgroundColor = Colors.White
        };

        treeGridView.Columns.Add(new GridColumn
        {
            HeaderText = "Content Type",
            DataCell = new TextBoxCell(0)
        });

        treeGridView.Columns.Add(new GridColumn
        {
            HeaderText = "Create",
            DataCell = new CustomCell
            {
                CreateCell = r =>
                {
                    TreeGridItem item = r.Item as TreeGridItem;

                    ContentTypeTag tag = (ContentTypeTag)item.Tag;
                    var contentType = _siteManager.CurrentSite.ContentTypes.First(x => x.Name.Equals(tag.ClassName));

                    void Click(object btnSender, EventArgs btnArgs)
                    {
                        //Your Event
                    }

                    var button = new LinkButton
                    {
                        Style = "primary-link-btn",
                        Text = $"Create {contentType.Name.ToSentenceCase()}",
                        Command = new Command(Click)
                    };

                    return button;
                }
            }
        });

        treeGridView.Columns.Add(new GridColumn
        {
            HeaderText = "Show All",
            DataCell = new CustomCell
            {
                CreateCell = r =>
                {
                    TreeGridItem item = r.Item as TreeGridItem;

                    ContentTypeTag tag = (ContentTypeTag)item.Tag;
                    var contentType = _siteManager.CurrentSite.ContentTypes.First(x => x.Name.Equals(tag.ClassName));

                    void Click(object btnSender, EventArgs btnArgs)
                    {
                       //Your Event
                    }

                    var button = new LinkButton
                    {
                        Style = "primary-link-btn",
                        Text = $"Show All {contentType.Name.ToSentenceCase()}",
                        Command = new Command(Click)
                    };

                    return button;
                }
            }
        });

            var treeGridItemCollection = new TreeGridItemCollection();
            foreach (var contentType in _siteManager.CurrentSite.ContentTypes)
            {
                var item = new TreeGridItem
                {
                    Values = new string[] { contentType.Name.ToSentenceCase(), "Create", "Show All" },
                    Tag = new ContentTypeTag
                    {
                        ClassName = contentType.Name
                    }
                };

                treeGridItemCollection.Add(item);
            }

            treeGridView.DataStore = treeGridItemCollection;

创建要启动的头列,然后创建一个TreeGridItemCollection,并将数据存储设置为该数据存储。行的每一列的值在字符串数组中设置为TreeGridItem的Value属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49348488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档