none
Iniciante. Ajuda em chamar método em ChildWindow RRS feed

  • Pergunta

  • Amigos,

    Estou desenvolvendo um ERP com WCF e SilverLight 3.

    Decidimos que todas as nossas telas serão do tipo ChildWindows. Dessa forma, eu tenho um método private que exibe todos os grupos cadastrados em um grid assim que o usuário entra na tela. Ele também é chamado por outros métodos, como por exemplo, assim que o usuário exclui um grupo. Veja o método abaixo:

     private void ExibirGrupos()
          {
            MyServiceClient Proxy = new MyServiceClient();
            Proxy.ObtenhaGruposCadastradosAsync(txtProcurarPor.Text);
            Proxy.ObtenhaGruposCadastradosCompleted += new EventHandler<ObtenhaGruposCadastradosCompletedEventArgs>(Proxy_ObtenhaGruposCadastradosCompleted);

            Proxy.CloseAsync();
            Proxy.CloseCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(Proxy_CloseCompleted);
          }

    Nesta tela de consulta, há o botão para incluir, que chama a tela de cadastro desta forma:

    private void agMenuIncluir_Click(object sender, EventArgs e)
          {
            CadGrupoProduto cadGrupoProduto = new CadGrupoProduto();
            cadGrupoProduto.Show();
          }

    O que eu não estou conseguindo realizar é: Após o usuário ter cadastrado os grupos, assim que ele fecha a tela de cadastro, eu possa chamar o método para exibir os grupos cadastrados, e desta forma, exibir todos os registros novamente.

    Como eu venho de programação Windows, eu pensei que assim que fosse chamado o método para exibir a janela de cadastro desta forma: cadGrupoProduto.Show(), o programa ficasse parado por ser um janela Modal, mas percebi que não é bem assim.

    Por favor alguém poderia ajudar?
    quarta-feira, 17 de março de 2010 18:31

Respostas

  • Olá Marcelos

    O evento será declarado (conforme explicado acima) na segunda tela, que, se eu entendi corretamente, é a ChildWindow de cadastro. Na primeira tela voce irá tratar este evento.

    Por exemplo:

    private void agMenuIncluir_Click(object sender, EventArgs e)
    {
            CadGrupoProduto cadGrupoProduto = new CadGrupoProduto();
     cadGrupoProduto.OnClosed += new EventHandler (cadGrupoProduto_OnClosed);
            cadGrupoProduto.Show();
    }

    private void cadGrupoProduto_OnClosed (object sender, EventArgs e)
    {
     ....
    }

    Espero que tenha ficado claro desta vez. Caso contrário, poste de novo que a gente ajuda.

    Breno Ferreira
    Site: http://brsilverlight.com
    Blog: http://brenocferreira.spaces.live.com
    Twitter : http://twitter.com/breno_ferreira

    Se a resposta foi útil, por favor, marque como resposta 

    sexta-feira, 19 de março de 2010 00:16

Todas as Respostas

  • Ola Marcelos

    O que voce pode fazer é criar um evento no seu ChildWindow que será chamado toda vez que voce voce setar o valor do DialogResult do ChildWindow. Por exemplo:

            public event EventHandler OnClosed;
            private void OkButton_Click( object sender, RoutedEventArgs e )
            {
                this.DialogResult = true;
                if(OnClosed != null)
                    OnClosed(this, new EventArgs());
            }

    Breno Ferreira
    Site: http://brsilverlight.com
    Blog: http://brenocferreira.spaces.live.com
    Twitter : http://twitter.com/breno_ferreira

    Se a resposta foi útil, por favor, marque como resposta

    quarta-feira, 17 de março de 2010 20:02
  • Breno,

    Obrigado pela resposta e desculpe na demora em responder.

    Como eu sou iniciante, eu peço desculpas mas eu não compreendi  o que você explicou. Por favor veja se é isso:

    1.  Primeira tela : Vamos chamá-la de ConsGrupo.cs. Eu tenho um grid exibindo todos os grupos cadastrados que faz isso através de uma chamada através do método "ExibirGruposCadastrados". Nela há um botão para incluir um novo grupo de produto, que irá chamar a tela chamada "CadGrupoProduto.cs";
    2. Segunda tela : Esta tela irá realizar o cadastro do grupo de produto;
    Este evento que você disse para ser implementado será construído em qual tela?

    Um forte abraço!
    quinta-feira, 18 de março de 2010 21:17
  • Olá Marcelos

    O evento será declarado (conforme explicado acima) na segunda tela, que, se eu entendi corretamente, é a ChildWindow de cadastro. Na primeira tela voce irá tratar este evento.

    Por exemplo:

    private void agMenuIncluir_Click(object sender, EventArgs e)
    {
            CadGrupoProduto cadGrupoProduto = new CadGrupoProduto();
     cadGrupoProduto.OnClosed += new EventHandler (cadGrupoProduto_OnClosed);
            cadGrupoProduto.Show();
    }

    private void cadGrupoProduto_OnClosed (object sender, EventArgs e)
    {
     ....
    }

    Espero que tenha ficado claro desta vez. Caso contrário, poste de novo que a gente ajuda.

    Breno Ferreira
    Site: http://brsilverlight.com
    Blog: http://brenocferreira.spaces.live.com
    Twitter : http://twitter.com/breno_ferreira

    Se a resposta foi útil, por favor, marque como resposta 

    sexta-feira, 19 de março de 2010 00:16
  • Grande Breno!!!


    Captei a vossa mensagem mestre. Agora o gafanhoto irá colocar em prática.

     

    Cara. muitíssimo obrigado e um forte abraço!!!!

     

    sexta-feira, 19 de março de 2010 18:36
  • Grande Marcelos

    Fico feliz em saber que pude ajudar!

    Abraço

    Breno Ferreira
    Site: http://brsilverlight.com
    Blog: http://brenocferreira.spaces.live.com
    Twitter : http://twitter.com/breno_ferreira

    Se a resposta foi útil, por favor, marque como resposta 

    sexta-feira, 19 de março de 2010 19:39