none
Carregando ListBox RRS feed

  • Pergunta

  • Boa Tarde.

    Estou desenvolvendo uma aplicação WEB utilizando C# e Silverlight e estou com uma certa dúvida em relação ao carregar 2 ListBox que utilizo em minha aplicação. Meus 2 lListBox são carregados da mesma maneira.

    Ao clicar é um botão, faço uma requisição ao serviço para fazer uma consulta ao banco de dados onde meu list box será carregado com algumas informações existentes no retorno da consulta. Carrego o meu ListBox da seguinte maneira:

    stPrincipal = new StackPanel();
                stPrincipal.Orientation = Orientation.Horizontal;
                stPrincipal.Margin = new Thickness(3);
    
                #region stackPanel Imagem Pessoa
                stImagemUsuario = new StackPanel();
                stImagemUsuario.Margin = new Thickness(2);
                stImagemUsuario.Background = new SolidColorBrush(Colors.White);
                stImagemUsuario.Width = 105;
                stImagemUsuario.Height = 105;
    
                imgUsuario = new Image();
                imgUsuario.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                imgUsuario.VerticalAlignment = System.Windows.VerticalAlignment.Center;
                imgUsuario.Width = 100;
                imgUsuario.Height = 100;
                imgUsuario.Margin = new Thickness(2);
                imgUsuario.Source = imagemUsuario;
                stImagemUsuario.Children.Add(imgUsuario);
                #endregion
    
                stInfoUsuario = new StackPanel();
                stInfoUsuario.Orientation = Orientation.Vertical;
                stInfoUsuario.Background = ncConversao.ConverteHexaToBrush("#D1D2D4");
                stInfoUsuario.Margin = new Thickness(2, 2, 2, 2);
                stInfoUsuario.Height = 105;
                stInfoUsuario.Width = 265;
    
                bordaStackPanel = new Border();
                bordaStackPanel.BorderBrush = new SolidColorBrush(Colors.Gray);
                bordaStackPanel.BorderThickness = new Thickness(0.5, 0.5, 0.5, 0.5);
                bordaStackPanel.Height = 105;
                bordaStackPanel.Width = 265;
                bordaStackPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                stInfoUsuario.Children.Add(bordaStackPanel);
    
                gridInternoStackPanelPessoa = new Grid();
                bordaStackPanel.Child = gridInternoStackPanelPessoa;
    
                info1Usuario = new TextBlock();
                info1Usuario.FontSize = 13;
                info1Usuario.Margin = new Thickness(8, 3, 0, 0);
                info1Usuario.Text = strInfo1;
                info1Usuario.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                info1Usuario.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                info1Usuario.Foreground = new SolidColorBrush(Colors.Black);
                gridInternoStackPanelPessoa.Children.Add(info1Usuario);
    
                info2Usuario = new TextBlock();
                info2Usuario.FontSize = 11;
                info2Usuario.Margin = new Thickness(8, 23, 0, 0);
                info2Usuario.Text = strInfo2;
                info2Usuario.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                info2Usuario.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                info2Usuario.Foreground = ncConversao.ConverteHexaToBrush("#818285");
                gridInternoStackPanelPessoa.Children.Add(info2Usuario);
    
                info3Usuario = new TextBlock();
                info3Usuario.FontSize = 11;
                info3Usuario.Margin = new Thickness(8, 40, 0, 0);
                info3Usuario.Text = strInfo3;
                info3Usuario.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                info3Usuario.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                info3Usuario.Foreground = ncConversao.ConverteHexaToBrush("#818285");
                gridInternoStackPanelPessoa.Children.Add(info3Usuario);
    
                info4Usuario = new TextBlock();
                info4Usuario.FontSize = 11;
                info4Usuario.Margin = new Thickness(8, 56, 0, 0);
                info4Usuario.Text = strInfo4;
                info4Usuario.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                info4Usuario.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                info4Usuario.Foreground = ncConversao.ConverteHexaToBrush("#818285");
                gridInternoStackPanelPessoa.Children.Add(info4Usuario);
    
                if (strTipoUsuario.Equals("xxxx"))
                {
                    info5Usuario = new TextBlock();
                    info5Usuario.FontSize = 11;
                    info5Usuario.Margin = new Thickness(8, 73, 0, 0);
                    info5Usuario.Text = strInfo5;
                    info5Usuario.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                    info5Usuario.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                    info5Usuario.Foreground = ncConversao.ConverteHexaToBrush("#818285");
                    gridInternoStackPanelPessoa.Children.Add(info5Usuario);
                }
    
                stPrincipal.Children.Add(stImagemUsuario);
                stPrincipal.Children.Add(stInfoUsuario);
    
                itemListBox = new ListBoxItem();
                itemListBox.Content = stPrincipal;
                itemListBox.Cursor = Cursors.Hand;
                itemListBox.Background = ncConversao.ConverteHexaToBrush("#E7E7E8");
                itemListBox.Height = 125;
                itemListBox.Width = 390;
                itemListBox.Margin = new Thickness(6, 12, 0, 0);
                itemListBox.BorderThickness = new Thickness(1, 1, 1, 1);
                itemListBox.BorderBrush = new SolidColorBrush(Colors.Blue);
                itemListBox.VerticalAlignment = System.Windows.VerticalAlignment.Center;
                itemListBox.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
                itemListBox.Tag = idUsuario;
    
                if (strTipoUsuario.Equals("xxx"))
                    pessoaListBox.Items.Add(itemListBox);
                else
                    veiculoListBox.Items.Add(itemListBox);

    uma consulta com um retorno de 1000 registros ele demora um pouco para terminar de carregar o meu ListBox, existe alguma outra maneira de eu carregar meu ListBox com que seja mais eficiente ?

    O ItemsSource por exemplo seria uma melhor solução, ou existe algum outro jeito ?

    Desde já agradeço a atenção de todos e a ajuda.

    Qualquer dúvida estou disponível para melhores esclarecimentos.

    segunda-feira, 5 de outubro de 2015 20:45