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