Silverlight组件性能

时间:2011-12-15 10:29:36

标签: c# .net silverlight .net-4.0

我提到了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,所有更新都已安装

1 个答案:

答案 0 :(得分:2)

如果这些6000个按钮不能同时显示但被滚动条隐藏,您可能想尝试使用VirtualizingStackPanel它会阻止生成不可见的子控件。