locked
Problema UserControl Silverlight RRS feed

  • 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????
    edson
    quinta-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.0
    quinta-feira, 21 de julho de 2011 18:52
  • Meu código esta assim:

    Chamada da janela, é uma ChildWindow

    wiClientesJ cliente = new wiClientesJ();

                cliente.Show();

     

     


    edson
    sexta-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.0
    sexta-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


    edson
    sexta-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.0
    sexta-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


    edson
    sexta-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