Jump to content
dnascimento

Lançar e "apanhar" Evento

Recommended Posts

dnascimento

Por favor, estou a pesquisar a imenso tempo  :wallbash: para descobrir como é que consigo criar o meu próprio evento, lança-lo e fazer com que outra window apanhe esse evento e execute uma função

Share this post


Link to post
Share on other sites
saramgsilva

Vê os seguintes links:

Events Tutorial

Events (C# Programming Guide)

Delegates, Events, and Lambda Expressions

Tens que:

1. Definir a tua class EventArgs caso seja preciso;

2. Defines o delegate para o evento;

3. Defines o teu evento;

4. Defines o método interno que irá verificar se o evento foi subscrito e o fará displutar

5. Chamas o método interno no lugar que o evento dee disparar. 

6. Subscreves o evento

assim de repente é isto.

Share this post


Link to post
Share on other sites
dnascimento

:wallbash:

Eu tenho esta estrutura:

Navigation window

          |

        Page

          |

      Frame ----------------------------> WindowPopup

Ou seja, uma navigation window navega uma página que tem uma frame. Dentro dessa frame, há um botão que mostra uma nova Window (estilo popup) e quero que essa popup faça alterar a página que a navigation window está actualmente.

Já estou farto de andar às  :wallbash: e nada...

Share this post


Link to post
Share on other sites
dnascimento

FINALMENTE!  :cheesygrin: Aqui fica a solução que consegui arranjar:

public static T GetParent<T>(DependencyObject child) where T : DependencyObject //Obter a window ou page pai

        {

            DependencyObject dependencyObject = VisualTreeHelper.GetParent(child);

            if (dependencyObject != null)

            {

                T parent = dependencyObject as T;

                if (parent != null)

                {

                    return parent;

                }

                else

                {

                    return GetParent<T>(dependencyObject);

                }

            }

            else

            {

                return null;

            }

        }

    }

Utilizo o código acima para determinar quem é a page da frame, coloco essa page no construtor da WindowPopup e apartir de lá modifico a janela  :cheesygrin: Parece simples mas primeiro que conseguisse descobrir as linhas de código acima... Dass

Share this post


Link to post
Share on other sites
saramgsilva

FINALMENTE!  :cheesygrin: Aqui fica a solução que consegui arranjar:

public static T GetParent<T>(DependencyObject child) where T : DependencyObject //Obter a window ou page pai

        {

            DependencyObject dependencyObject = VisualTreeHelper.GetParent(child);

            if (dependencyObject != null)

            {

                T parent = dependencyObject as T;

                if (parent != null)

                {

                    return parent;

                }

                else

                {

                    return GetParent<T>(dependencyObject);

                }

            }

            else

            {

                return null;

            }

        }

    }

Utilizo o código acima para determinar quem é a page da frame, coloco essa page no construtor da WindowPopup e apartir de lá modifico a janela  :cheesygrin: Parece simples mas primeiro que conseguisse descobrir as linhas de código acima... Dass

mas isto não tem nada a ver com eventos.

Share this post


Link to post
Share on other sites
dnascimento

Pois não... Eu pensava que era possivel lançar um evento de uma janela para outra janela (percorrendo a arvore lógica desta) mas não consegui faze-lo... Então improvisei solução...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.