Usuário com melhor resposta
Como selecionar um item do ComboBox após a carga de dados

Pergunta
-
Olá a todos,
tenho o seguinte ComboBox:
<ComboBox x:Name="cboEmpresas" HorizontalAlignment="Center" Width="250" DisplayMemberPath="desEmpresa" DataContext="codEmpresa" SelectionChanged="cboEmpresas_SelectionChanged" Height="26" Loaded="cboEmpresas_Loaded" </ComboBox>
e carrego os dados da seguinte maneira:
private void cboEmpresas_Loaded(object sender, RoutedEventArgs e) { LoadOperation<EntEmpresa> LoadEmp = this._empresaContext.Load(this._empresaContext.GetEmpresasQuery()); cboEmpresas.ItemsSource = LoadEmp.Entities; }
a minha dúvida é como selecionar um item desse ComboBox (quando a página abre os itens estão lá mas o primeiro esta em branco, o usuário obrigatoriamente deve selecionar um item manualmente), pois se tento setar o indice "cboEmpresas.SelectedIndex = 0" ocorre um erro.quarta-feira, 25 de novembro de 2009 14:04
Respostas
-
Olá,
Se vc obtem os dados via WebService (WCF), pode disparar o processo para consumir o serviço no metodo "Page1_Loaded".
Eu faço desta forma.
Veja a seguir:
private void FrmPessoa_Loaded(object sender, RoutedEventArgs e)
{
// Popula ComboBoxs
var proxy = new WcfParceiroClient();
proxy.RecuperaTabelasDeValidacoesPessoaCompleted += new EventHandler<RecuperaTabelasDeValidacoesPessoaCompletedEventArgs>(proxy_RecuperaTabelasDeValidacoesPessoaCompleted);
}
void proxy_RecuperaTabelasDeValidacoesPessoaCompleted(object sender, RecuperaTabelasDeValidacoesPessoaCompletedEventArgs e)
{
if (e.Error == null)
{
if (e.Result != null)
{
// ComboBox "Sexo"
var sexoList = e.Result.DataValidationSvPnPFisicaSexo;
foreach (TabelaDeReferencia tr in sexoList)
{
this.cboSexo.Items.Add(tr.Descricao.Trim());
}
}
}
}
abs,
Pedro Palma- Marcado como Resposta du_nirvana quarta-feira, 25 de novembro de 2009 19:05
quarta-feira, 25 de novembro de 2009 18:10 -
Pedro eu não fiz exatamente assim, mas sua dica me deu um norte, veja como ficou meu código:
public cadUsuarios() { InitializeComponent(); this.Loaded += new RoutedEventHandler(cadUsuarios_Loaded); } void cadUsuarios_Loaded(object sender, RoutedEventArgs e) { LoadOperation<EntEmpresa> LoadEmp = this._empresaContext.Load(this._empresaContext.GetEmpresasQuery()); LoadEmp.Completed += new EventHandler(LoadEmp_Completed); } void LoadEmp_Completed(object sender, EventArgs e) { cboEmpresas.ItemsSource = this._empresaContext.EntEmpresas; cboEmpresas.SelectedIndex = 0; }
Muito obrigado!- Marcado como Resposta du_nirvana quarta-feira, 25 de novembro de 2009 19:05
quarta-feira, 25 de novembro de 2009 19:05
Todas as Respostas
-
Olá,
Popule o ComboBox no costrutor da pagina. Veja a seguir:
public Page1()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Page1_Loaded);
}void Page1_Loaded(object sender, RoutedEventArgs e)
{
LoadOperation<EntEmpresa> LoadEmp = this._empresaContext.Load(this._empresaContext.GetEmpresasQuery());
cboEmpresas.ItemsSource = LoadEmp.Entities;
if (cboEmpresas.Items.Count > 0)
{
cboEmpresas.SelectedIndex = 0;
}
}
Espero que seja este o problema,
abs,
Pedro Palmaquarta-feira, 25 de novembro de 2009 17:30 -
Olá Pedro,
muito obrigado pela resposta mas isso não resolveu, a questão é que independente do evento o total de itens no combo é sempre zero, acredito que seja pelo fato do processo ser assíncrono, mas não faço idéia de como resolver.quarta-feira, 25 de novembro de 2009 17:40 -
Olá,
Se vc obtem os dados via WebService (WCF), pode disparar o processo para consumir o serviço no metodo "Page1_Loaded".
Eu faço desta forma.
Veja a seguir:
private void FrmPessoa_Loaded(object sender, RoutedEventArgs e)
{
// Popula ComboBoxs
var proxy = new WcfParceiroClient();
proxy.RecuperaTabelasDeValidacoesPessoaCompleted += new EventHandler<RecuperaTabelasDeValidacoesPessoaCompletedEventArgs>(proxy_RecuperaTabelasDeValidacoesPessoaCompleted);
}
void proxy_RecuperaTabelasDeValidacoesPessoaCompleted(object sender, RecuperaTabelasDeValidacoesPessoaCompletedEventArgs e)
{
if (e.Error == null)
{
if (e.Result != null)
{
// ComboBox "Sexo"
var sexoList = e.Result.DataValidationSvPnPFisicaSexo;
foreach (TabelaDeReferencia tr in sexoList)
{
this.cboSexo.Items.Add(tr.Descricao.Trim());
}
}
}
}
abs,
Pedro Palma- Marcado como Resposta du_nirvana quarta-feira, 25 de novembro de 2009 19:05
quarta-feira, 25 de novembro de 2009 18:10 -
Pedro eu não fiz exatamente assim, mas sua dica me deu um norte, veja como ficou meu código:
public cadUsuarios() { InitializeComponent(); this.Loaded += new RoutedEventHandler(cadUsuarios_Loaded); } void cadUsuarios_Loaded(object sender, RoutedEventArgs e) { LoadOperation<EntEmpresa> LoadEmp = this._empresaContext.Load(this._empresaContext.GetEmpresasQuery()); LoadEmp.Completed += new EventHandler(LoadEmp_Completed); } void LoadEmp_Completed(object sender, EventArgs e) { cboEmpresas.ItemsSource = this._empresaContext.EntEmpresas; cboEmpresas.SelectedIndex = 0; }
Muito obrigado!- Marcado como Resposta du_nirvana quarta-feira, 25 de novembro de 2009 19:05
quarta-feira, 25 de novembro de 2009 19:05