Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# Silverlight组件性能_C#_.net_Silverlight_.net 4.0 - Fatal编程技术网

C# Silverlight组件性能

C# Silverlight组件性能,c#,.net,silverlight,.net-4.0,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

我提到了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
出现这种悬停性能问题的原因是什么

有关我的开发人员计算机的更多信息:


Silverlight 4、Visual Studio 2010、.NET与.4相比,所有更新都已安装

如果这6000个按钮在同一时间不可见,但被滚动条隐藏,您可能希望尝试并使用它,以防止生成不可见的子控件。

是否确实需要将6000个按钮添加到
堆栈面板
?不同的UI可能是更好的解决方案。这是对silverlight可以处理多少控件的性能测试。silverlight 5已经发布,据称有性能改进。可能也想试试。这个解决方案对我来说只是一个解决办法,为什么silverlight不能在一个stackpanel中绘制6000个按钮?您可以接受的最小值是多少?我不能说可以接受的最小控制量。问题是,为什么Silverlight不能处理这么多控件。如果我在HTML页面中放置10.000个按钮,每个按钮的悬停效果都很好,在silverlight中则不是。即使我放置一个combobox,其中包括几个comboboxitems和6000个按钮,comboboxitems的悬停效果也很差。老实说,我认为这一切都和一辆在交通堵塞时能以500英里/小时的速度行驶的汽车一样有用。我很高兴微软决定,他们必须把精力放在其他问题上。我真的不在乎浏览器能做到这一点,因为我永远不会需要它。
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);