none
Captura botón maximizar WPF RRS feed

Respuestas

  • Vos podés recuperar el WindowState en el evento StateChanged.

    Ok, como el nombre lo sugiere en ese punto el estado ya cambió...

    • Marcado como respuesta dac04 sábado, 21 de enero de 2012 3:05
    viernes, 20 de enero de 2012 14:24
  • Hola

    Podrías hacer algo como esto:

            using System.Windows.Interop;
    
            public const Int32 WM_SYSCOMMAND = 0x112;
            public const Int32 SC_MAXIMIZE = 0xF030;
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
                source.AddHook(new HwndSourceHook(WndProc));
            }
    
            private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
            {
                if (msg == WM_SYSCOMMAND)
                {
                    if (wParam.ToInt32() == SC_MAXIMIZE)
                    {
                        MessageBox.Show("Evento Maximizar Capturado");
                        //handled = true; //Cancelar evento maximizar
                    }
                }
    
                return IntPtr.Zero;
            }
    
    Un saludo


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta dac04 sábado, 21 de enero de 2012 3:05
    viernes, 20 de enero de 2012 16:05

Todas las respuestas

  • No creo que haya un evento para maximizar, minimizar o algo por estilo. Podrias utilizar el evento SizeChanged para informarte del cambio de tamaño y hay utilizar el WindowState para saber si la ventana esta maximizada o no. Podrias ahi mismo tambien chequear por el ActualWidth o ActualHeight para hacer mejores decisiones.

    Espero que esto te ayude.

    viernes, 20 de enero de 2012 14:18
  • Vos podés recuperar el WindowState en el evento StateChanged.

    Ok, como el nombre lo sugiere en ese punto el estado ya cambió...

    • Marcado como respuesta dac04 sábado, 21 de enero de 2012 3:05
    viernes, 20 de enero de 2012 14:24
  • Hola

    Podrías hacer algo como esto:

            using System.Windows.Interop;
    
            public const Int32 WM_SYSCOMMAND = 0x112;
            public const Int32 SC_MAXIMIZE = 0xF030;
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
                source.AddHook(new HwndSourceHook(WndProc));
            }
    
            private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
            {
                if (msg == WM_SYSCOMMAND)
                {
                    if (wParam.ToInt32() == SC_MAXIMIZE)
                    {
                        MessageBox.Show("Evento Maximizar Capturado");
                        //handled = true; //Cancelar evento maximizar
                    }
                }
    
                return IntPtr.Zero;
            }
    
    Un saludo


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta dac04 sábado, 21 de enero de 2012 3:05
    viernes, 20 de enero de 2012 16:05
  • Perfecto. Se puede hookear el handler.

    Eso fue lo primero que busqué y no encontré.

    Recién empiezo a leer sobre wpf... saludos.

    viernes, 20 de enero de 2012 16:47