Inquiridor
Problema UserControl Silverlight

Pergunta
-
Tenho o seguinte cenario:
Uma page em silverlight com um Grid que abre um usercontrol para cadastar um cliente, porem ao voltar a tela os dados nao sao atualizados. Uso o evento Loaded do usercontrol para carregar os dados, mas se eu nao clicar no botao de atualizar os dados nao sao atualizados.
Obrigado pela ajuda.
edson- Movido Levi Domingos quarta-feira, 20 de julho de 2011 21:16 (De:C#)
quarta-feira, 20 de julho de 2011 14:44
Todas as Respostas
-
Alguem pode ajudar????
edsonquinta-feira, 21 de julho de 2011 12:28 -
Edson, esse UserControl é aberto como? Ele está dentro de uma ChildWindow, por acaso?
[MCTS] Silverlight 4/ASP.Net 3.5/WPF 3.5/WinForms 2.0quinta-feira, 21 de julho de 2011 18:52 -
Meu código esta assim:
Chamada da janela, é uma ChildWindow
wiClientesJ cliente = new wiClientesJ();
cliente.Show();
edsonsexta-feira, 22 de julho de 2011 14:28 -
Você vai fazer o seguinte:
//Chamada da ChildWindow
wiClientesJ cliente = new wiClientesJ();
cliente.Closing += new EventHandler<System.ComponentModel.CancelEventArgs>(cliente_Closing);
cliente.Show();
//O Evento Closing, vai gerar um event handler
void cliente_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
//Aqui dentro, você atualiza seus dados
}Ou seja: assim que você fechar sua janela, a página que a chamou, vai atualizar os dados, pelo evento Closing
Espero ter ajudado ;)
[MCTS] Silverlight 4/ASP.Net 3.5/WPF 3.5/WinForms 2.0sexta-feira, 22 de julho de 2011 14:35 -
Poderia me dar uma ajuda mais detalhada
Segue codigo:
public partial class ucClientesJ : UserControl { public ucClientesJ() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { wiClientesJ cliente = new wiClientesJ(); cliente.Closing += new EventHandler<System.ComponentModel.CancelEventArgs>(cliente_Closing); cliente.Show(); } public void getdados(object sender, GetClienteJuridicoCompletedEventArgs e) { this.gridControl1.ItemsSource = e.Result.ToList(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { //Inicia modo operante busy.IsBusy = true; //Inicia Thread ThreadPool.QueueUserWorkItem((state) => { //Aguarda 3s Thread.Sleep(3 * 1000); //Altera BusyIndicator, para modo inoperante Dispatcher.BeginInvoke(() => busy.IsBusy = false); }); ServiceClient ocliente = new ServiceClient(); ocliente.GetClienteJuridicoCompleted += new EventHandler<GetClienteJuridicoCompletedEventArgs>(getdados); ocliente.GetClienteJuridicoAsync(); } void cliente_Closing(object sender, System.ComponentModel.CancelEventArgs e) { //Aqui dentro, você atualiza seus dados this.gridControl1.ItemsSource = g.Result.ToList(); } }
Quando tento chamar o evento da erro! Tem como chamar dois eventos??Obrigado pela ajuda
edsonsexta-feira, 22 de julho de 2011 15:01 -
Edson, qual evento você tá tentando chamar que tá dando erro?
Evento Closing da janela?
[MCTS] Silverlight 4/ASP.Net 3.5/WPF 3.5/WinForms 2.0sexta-feira, 22 de julho de 2011 16:32 -
Dentro do closing preciso carregar meus dados novamente, correto?
Entao faco isso
void cliente_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
//Aqui dentro, você atualiza seus dados
this.gridControl1.ItemsSource = g.Result.ToList();
}
Porem ao colocar assim:
void cliente_Closing(object sender, System.ComponentModel.CancelEventArgs e, GetClienteJuridicoCompletedEventArgs g)
{
//Aqui dentro, você atualiza seus dados
this.gridControl1.ItemsSource = g.Result.ToList();
}
Dai da erro na linha onde faco a chamado a janela
wiClientesJ cliente = new wiClientesJ();
cliente.Closing += new EventHandler<System.ComponentModel.CancelEventArgs>(cliente_Closing);
cliente.Show();
Error 1 No overload for 'cliente_Closing' matches delegate 'System.EventHandler<System.ComponentModel.CancelEventArgs>' C:\Users\dsk01\documents\visual studio 2010\Projects\w7Adovagacia\w7Adovagacia\ucClientesJ.xaml.cs 27 32 w7Adovagacia
edsonsexta-feira, 22 de julho de 2011 18:47 -
Pelo jeito aí Edson, é problema de namespace no evento.
Vou pedir pra que delete o método void cliente_Closing() todo, e a linha onde fazemos vínculo com o evento(cliente.Closing += new EventHandler<System.ComponentModel.CancelEventArgs>(cliente_Closing);)
Feito isto, crie novamente digite novamente "cliente.Closing +=", e pressione Tab duas vezes, o que cria o Event Handler novamente, de acordo com as necessidades da tela.
Certamente é pelo fato de o evento Closing aceitar um parâmetro do tipo CancelEventArgs, e você estar passando um GetClienteJuridicoCompletedEventArgspra ele.
Abraços!
[MCTS] Silverlight 4/ASP.Net 3.5/WPF 3.5/WinForms 2.0- Sugerido como Resposta Alliston Carlos segunda-feira, 25 de julho de 2011 20:33
sexta-feira, 22 de julho de 2011 18:56 -
Ellison, estava lendo, tentando entender o seu problema, peço que tenha mais cuidado com o código que vai postar para nós aqui no Fórum, pois eu encontrei vários erros que dificultaram o entendimento do código (de preferencia, monte-o no VS, verifique-o, depois dale Ctrl+C, Ctrl+V).
Mas, ok, ler seu último post foi o suficiente para entender o probleminha.
Ellison, ao trabalhar com eventos é preciso entender uma coisa: Eventos, assim como propriedades, possuem um tipo específico. Esses tipos são chamados de Delegates, e somente métodos que seguem a estrutura deste delegate podem ser atribuidos ao evento.
Peço que dê uma lida sobre delegates antes de qualquer coisa! (MSDN: Delegates)
Na insistencia da dúvida, ou no não entendimento, ou no surgimento de novas dúvidas, pode postar aqui mesmo, ou iniciar um novo tópico, que iremos ajudá-lo com certeza.
Alias, dúvidas que não direcionadas exclusivamente ao Silverlight, eu aconselharia pstar na de C#, que é bem mais movimentada!
quinta-feira, 28 de julho de 2011 12:39