Inquiridor
Carregando ListBox

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.