Silverlight组件性能



我提到了Silverlight组件的一些性能问题。我有一个StackPanel(例如),我想给它添加6000个按钮。

当我启动屏幕加载至少5到6秒。在所有按钮渲染完成后,我将鼠标移动到一些按钮上,高亮显示非常缓慢。但首先这里是示例代码:

StackPanel panel = new StackPanel { Orientation = Orientation.Horizontal, Width = 1000, Height = 1000};
for (int i = 0; i < 6000; i++)
{
     panel.Children.Add(new Button { Content = "Button" });
}
LayoutRoot.Children.Add(panel); //LayoutRoot is a Grid

如果我将StackPanel分成几个面板并添加按钮,那么悬停性能比以前更好。下面是代码:

StackPanel root = new StackPanel {Orientation = Orientation.Vertical};
for (int i = 0; i < 100; i++)
{
     StackPanel row = new StackPanel { Orientation = Orientation.Horizontal};
     for (int j = 0; j < 60; j++)
     {
          row.Children.Add(new Button { Content = "Button"});
     }
     root.Children.Add(row);
}
LayoutRoot.Children.Add(root);

悬停性能问题的原因是什么?

关于我的开发者机器的更多信息:

Silverlight 4, Visual Studio 2010, .NET vs. 4,所有更新都已安装

如果这6000个按钮同时不可见,但被滚动条隐藏,你可能想尝试使用VirtualizingStackPanel,它可以防止生成不可见的子控件

最新更新