Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Eto.Forms树状视图_C#_Eto - Fatal编程技术网

C# 如何使用Eto.Forms树状视图

C# 如何使用Eto.Forms树状视图,c#,eto,C#,Eto,我在这方面已经做了一段时间了,似乎不知道如何让Eto.Forms TreeGridView控件正确呈现。我正在尝试添加一些GridViewItem,但在顶部有一个灰色的小条: 这是我的密码: List<ITreeGridItem> treeGridItems = new List<ITreeGridItem>(); foreach (var contentType in contentTypes) {

我在这方面已经做了一段时间了,似乎不知道如何让Eto.Forms TreeGridView控件正确呈现。我正在尝试添加一些GridViewItem,但在顶部有一个灰色的小条:

这是我的密码:

        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));
List treeGridItems=new List();
foreach(contentTypes中的var contentType)
{
Add(新的TreeGridItem(contentType.Name));
}
内容=新文档页面(新树状视图
{
数据存储=新的TreeGridItemCollection(treeGridItems)
}新填料(20));

我甚至不确定从何处开始,我只是想得到一个包含文本的树,以便在此时为每个节点显示,但我甚至无法做到这一点。

经过一点尝试和错误,我找到了如何使用树视图:

 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的values属性。

我也丢失了!在他们的GitWiki上,有GridView的文档,但TreeGridView没有。。。你有什么想法吗?实际上我在这方面已经取得了一些进展,我会发布一个答案shortly@brainsandwich很抱歉,这花了几天时间,但我刚刚发布了答案,如果您有任何问题,请告诉我。好的,您最初没有做的部分是添加GridColumns!感谢您的回答:)我还看到您可以直接使用TreeGridItem而不是TreeGridItemCollection来定义数据(我不知道是否有缺点)。