我需要加快WPF程序的性能

时间:2013-08-26 19:13:41

标签: c# wpf windows performance

我正在制作一个WPF桌面应用程序,我需要在带有行和列的堆栈面板中显示15,000个元素,我有4个元素声明如下:

public class PasaImagen
{
    public string imagenbindeada { get; set; }
    public int TiempoDeVida { get; set; }
    //public int Cantidad { get; set; }
}

if (imagenrandom1 == 1)
                    {
                        //string consecutivas = "/foto" + imagenrandom1.ToString() + ".png";
                        items1[i].Add(new PasaImagen { imagenbindeada = "/pasto.png", TiempoDeVida=TiempoDeVidaPasto });
                        matriz1[j, i] = "pasto";
                        listapocicionesdematriz1.Add(i.ToString() + "  , " + j.ToString());
                    }
                    if (imagenrandom1 == 2)
                    {
                        //string consecutivas = "/foto" + imagenrandom1.ToString() + ".png";
                        items1[i].Add(new PasaImagen { imagenbindeada = "/conejo.png", TiempoDeVida=TiempoDeVidaConejo });
                        matriz1[j, i] = "conejo";
                        listapocicionesdematriz1.Add(i.ToString() + "  , " + j.ToString());
                    }
                    if (imagenrandom1 == 3)
                    {
                        //string consecutivas = "/foto" + imagenrandom1.ToString() + ".png";
                        items1[i].Add(new PasaImagen { imagenbindeada = "/lobo.png", TiempoDeVida=TiempoDeVidaLobo });
                        matriz1[j, i] = "lobo";
                        listapocicionesdematriz1.Add(i.ToString() + "  , " + j.ToString());
                    }
                    if (imagenrandom1 == 4)
                    {

                        items1[i].Add(new PasaImagen { imagenbindeada = "/tierra.png" ,TiempoDeVida=TiempoDeVidaTierra });
                        matriz1[j, i] = "tierra";
                        listapocicionesdematriz1.Add(i.ToString() + "  , " + j.ToString());
                    }

真正的问题是当我必须在stackpanel中显示它们时,当我使用1,000个元素时,我对它们没有任何问题,它们在一个循环中不断地在一个单元格之间移动,没有问题,但是我使用了6,000个元素,应用程序的性能非常慢,而且它们的运动变得非常慢而且很差。

问题是,我如何转换Uri图像或图像,以便更容易阅读程序,并在执行时显示项目时获得更好的性能?

1 个答案:

答案 0 :(得分:2)

你应该虚拟化这个。尝试使用虚拟化容器。有关详细信息,请参阅VirtualizingStackPanel的帮助。