繁体   English   中英

如何加快将控件添加到WPF网格的速度?

[英]How can I speed up adding controls to a WPF grid?

对于个人项目,我需要根据可变大小数组的内容动态填充网格。 我按照下面的方法使用代码来做到这一点,并且效果很好,除了当数组变大(如200 x 200或更大)时,它变慢了(填充了20秒以上)。 看起来,实例化按钮的速度很快,但是添加到网格的速度却很慢。
我做错什么了吗? 使用常规WPF网格,我可以做些什么来加快此过程吗? 我应该看看另一个控件吗? 在此先感谢您的任何建议。

        int columns=200;
        int rows=200;

        var width = new GridLength(30);
        var height = new GridLength(25);

        for (int column = 0; column < columns; column++)
        {
            var columnDefinition = new ColumnDefinition();
            columnDefinition.Width = width;
            this.TestGrid.ColumnDefinitions.Add(columnDefinition);
        }

        for (int row = 0; row < rows; row++)
        {
            var rowDefinition = new RowDefinition();
            rowDefinition.Height = height;
            this.TestGrid.RowDefinitions.Add(rowDefinition);
        }

        for (int column = 0; column < columns; column++)
        {
            for (int row = 0; row < rows; row++)
            {
                var button = new Button();
                button.Content = row.ToString() + ", " + column.ToString();
                Grid.SetRow(button, row);
                Grid.SetColumn(button, column);
                this.TestGrid.Children.Add(button);
            }
        }

诚然,我仍在用WPF弄碎印章,但是我要四处张扬地说,尝试添加40,000个控件是您真正的瓶颈; 与其说您如何添加控件,不如说是。

即使您在XAML中将所有40,000个控件都进行了硬编码,但最终仍然需要20秒钟以上的加载时间。

这是世界上最大的数据输入表,还是庞大的扫雷板;-)

您是否尝试过围绕以下循环:

GridView.BeginUpdate();

// add items

GridView.EndUpdate();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM