Me di cuenta de que si muevo la ventana de WPF a través de código, sólo voy a ver que cambios cuando la ventana se actualiza (si me minimizar y maximizar).

Es posible actualizar la interfaz de usuario de WPF en la demanda?

EDIT: en realidad estoy tratando de hacer esta ventana siga otra ventana.

Así que me estoy enganchando a la otra de la ventana de eventos:

    m_wndParent = parent;
    this.Owner = m_wndParent;
    m_wndParent.SizeChanged += ParentSizeChanged;
    m_wndParent.LayoutUpdated += ParentLocationChanged;

y luego me cambio de mi ventana posición:

   private void ParentLocationChanged(object sender, EventArgs e)
        {
            Window parent = sender as Window;
            this.Top = parent.Top;
            this.Left = parent.Left;
            this.UpdateLayout();
        }
  • ¿Cómo se puede mover la ventana? Mostrar el código por favor.
  • Me cambio de su «Izquierda» y «Top» de las propiedades.
  • Que debería de funcionar sin necesidad de «actualizar». Donde o cuando puede establecer estas propiedades? De nuevo, mostrar algo de código.
  • ok, aquí está 🙂
InformationsquelleAutor Idov | 2013-01-06

2 Comentarios

  1. 1

    Debe agregar a su ParentLocationChanged controlador de la LocationChanged evento en lugar de LayoutUpdated (que sirve a un propósito completamente diferente).

    m_wndParent.LocationChanged += ParentLocationChanged;
    
    private void ParentLocationChanged(object sender, EventArgs e)
    {
        var parent = sender as Window;
        Top = parent.Top;
        Left = parent.Left;
    }
  2. 0

    Debe conectar los padres.LocationChanged y, a continuación, llamar a InvalidateVisual. Ver De MSDN para obtener más detalles.

    • InvalidateVisual no es necesario. Es sólo la creación de la Izquierda y de Arriba propiedades.
    • Él le preguntó «¿Es posible la actualización de la interfaz de usuario de WPF en la demanda?» Si es así, necesita InvalidateVisual. Si sólo quiere establecer la posición de modo que la ventana de la siguiente manera original, a continuación, sólo a la Izquierda/Superior es necesario.
    • Ha editado la pregunta. Obviamente, él sólo quiere mover la ventana. Aquí es importante distinguir entre refrescante (es decir, UpdateLayout o InvalidateVisual) y mover la ventana del escritorio. Estos dos son completamente independientes y al menos debería punto de que en su respuesta.
    • Cierto, tienes razón.

Dejar respuesta

Please enter your comment!
Please enter your name here