locked
duvidas ChildWindow RRS feed

  • Pergunta

  • Olá a todos,

    Tentei procurar documentos e perguntas em fóruns, porém nada que diz respeito a minha duvida.

    Primeiramente, qual a melhor forma de instanciar uma ChildWindow ?! Pois temos algumas diferenças...

    -> instanciando no public class : Logo que eu executo o projeto ele já carrega minha Child / Posso usar a instancia do objeto dessa Child em todo resto da tela, sem instanciar novamente / Quando abro ela e digito algo em algum campo, fecho, e abro novamente, os campos não limpam.

    -> instanciado dentro de um Button: Só carrega após o click / Posso só utilizar a instancia dela dentro do Button, precisando instanciar fora se preciso for / Quando abro ela e digito algo em algum Textbox, fecho e abro novamente, os campos estão limpos.

    Outra duvida, é no fechamento dela. Quando utilizo o comando "DialogResult = false/true" ela sai da memória ou permanece ?! A duvida acima influencia quanto a ela permanecer na memória ?! O que devo fazer para tirar ela da memória depois de fechada !?

    Espero que vocês possam me ajudar !!

    Abraços !!


    Atenciosamente, Seratti. Se responder sua pergunta, marque, se apenas for util, marque.

    sexta-feira, 21 de setembro de 2012 16:28

Respostas

  • Oi Seratti,

    Parece uma responsa fútil, mas enfim: Depente.

    Vamos pensar em algo mais básico: tudo que se instancia qualquer objeto você está alocando memória e no caso do silverlight, qualquer deslize que se dá em relação a alocar recurso desnecessário pode acarretar diretamente na perda de desempenho do aplicativo.

    No caso, fica a pergunta: Você precisa da ChildWindow instanciada sempre?

    Quanto ao DialogResult, como a chamada da ChildWindow é assincrona, tem um evento chamado Closed que apesar de ser um EventHandler simples, o primeiro parametro é o ChildWindow e você pode recuperar esse DialogResult. Algo mais ou menos assim:

            private void Button1_Click(object sender, RoutedEventArgs e)
            {
                ChildWindow1 child = new ChildWindow1();
    
                child.Closed += new EventHandler(child_Closed);
    
                child.Show();
            }
    
            void child_Closed(object sender, EventArgs e)
            {
                ChildWindow1 child = (ChildWindow1)sender;
    
                MessageBox.Show(child.DialogResult.GetValueOrDefault().ToString());
            }

    Espero que ajude.

    Atenciosamente,


    Samuel Fabel

    • Marcado como Resposta Seratti terça-feira, 2 de abril de 2013 11:24
    quarta-feira, 24 de outubro de 2012 17:10