Bien this pregunta y this pregunta son similares, pero no hay respuestas que funcionen. De hecho, esperaba que WindowStartupLocation = CenterOwner funcionara ... no es así. Parece centrar la nueva ventana en el centro de una columna de cuadrícula, no en el centro de la ventana principal. Entonces asumo que piensa que es el padre. En segundo lugar, cuando cierro el diálogo y lo vuelvo a abrir, no está centrado, sino que se mueve hacia abajo y hacia la derecha desde la posición anterior. Y si muevo la ventana principal a un segundo monitor, la ventana emergente se abre en el monitor predeterminado. ¿Estas propiedades están equivocadas o solo estoy pensando que debería funcionar de otra manera? Supongo que podría calcular las propiedades Superior e Izquierda manualmente. Solo quiero que la ventana emergente esté centrada en la ventana principal, sin importar dónde esté.WPF WindowStartupLocation = "CenterOwner" no es realmente el centro, y aparece por todas partes, ¿por qué?
Respuesta
Probablemente porque no configuró el propietario:
this.Owner = App.MainWindow; // for example
Eso es como lo hago y se centra la ventana perfectamente todo el tiempo.
Extender sobre lo que va a Eddins comentado, se puede crear un método de sobrecarga para ShowDialog() o Mostrar() en su ventana:
public void ShowDialog(Window owner)
{
this.Owner = owner;
this.ShowDialog();
}
public void Show(Window owner)
{
this.Owner = owner;
this.Show();
}
o sobrecargar un constructor:
public MyWindow(Window owner)
: this()
{
this.Owner = owner;
}
Si usted crea una extensión para esto, puede reutilizar esta buena idea:
/// <summary>
/// Opens a window modally, with an owner
/// </summary>
/// <param name="window">The window to open</param>
/// <param name="opener">The owner of the window getting opened</param>
/// <returns>window.ShowDialog()</returns>
public static bool? ShowDialog(this Window window, Window opener)
{
window.Owner = opener;
return window.ShowDialog();
}
Tuve el mismo problema Lem ... pero fue principalmente debido al hecho de que, cuando quise deshacerme de la ventana hija, usé hide()
en lugar de close()
... así que cuando la vuelvas a abrir, porque estaba oculta y no cerrada, cuando el ventana principal se mueve, todavía se abre en su ubicación de inicio ...
Así que cuando cierre la ventana secundaria en lugar de ocultarla, por ejemplo, cuando termine de trabajar con ella.
- 1. ¿Por qué "android:" en todas partes?
- 2. ¿Por qué WindowStartupLocation = CenterScreen coloca mi ventana en algún lugar que no sea el centro de la pantalla?
- 3. ¿Por qué el cacao no usa el mismo estilo de declaración enum en todas partes?
- 4. ¿Por qué la selección de pseudo :: CSS3 no cambia el color de todas las partes?
- 5. ¿Por qué abrirlo? ¿Y cómo involucrarse realmente?
- 6. ¿Por qué el centro de RenderTransformOrigin es 0.5.0.5?
- 7. ¿Por qué aparece el ValidationSummary aunque el ModelState es válido?
- 8. el juego no es reconocido por el centro de juego
- 9. ¿Qué es un "identificador de varias partes" y por qué no puede vincularse?
- 10. ¿por qué aparece javax.naming.NamingException aquí?
- 11. ¿Por qué FontStretch no funciona en WPF?
- 12. ¿El Python GIL es realmente por intérprete?
- 13. ¿Por qué las excepciones no son propagadas por WPF Dispatcher.Invoke?
- 14. ¿Por qué una función con modificador protegido puede ser anulada y accesible en todas partes?
- 15. UIPopoverController: ¿Por qué mi popover no aparece donde quiero?
- 16. C#, WPF - OpenFileDialog no aparece
- 17. ¿Es posible reemplazar el "operador new() global" en todas partes?
- 18. WPF - ¿Por qué no funciona Keyboard.Focus()?
- 19. por qué no BindingList en WPF
- 20. ¿Por qué todo en WPF es borroso?
- 21. null.Equals (null) ¿Por qué aparece una NullReferenceException
- 22. ¿Por qué aparece la advertencia 'No -renderInContext: method found'?
- 23. ¿Por qué no baja WPF Canvas ahora?
- 24. ¿Por qué ActualSize no actualiza su valor en WPF?
- 25. XSLT ¿por qué aparece en mi hrefs?
- 26. ¿Por qué LoadArchives no aparece en la lista de tareas?
- 27. ¿Por qué se XDebug no aparece en phpinfo()
- 28. ¿Qué es el/elemento? ¿Como lo uso? ¿Y por qué?
- 29. ¿Por qué la documentación de Haddock no aparece en Hackage?
- 30. ¿Por qué mi salida de cout no aparece inmediatamente?
Como alternativa, configure al propietario antes de llamar a '.Show()' o '.ShowDialog()' en la ventana: 'window.Owner = this;' –
Doh, tiene que estar bromeando. Eso me ha mordido antes en winforms. Maldita cosa. ¿No puedes incumplir tu propietario a quien alguna vez te haya creado una instancia? – nportelli
Haha podrías crear una sobrecarga de constructor que tome al propietario, añadiré un ejemplo en la respuesta. – Carlo