En WPF puede llamar al ShowDialog
en una ventana exactamente una vez. Después de eso está hecho para.Cómo detectar que una ventana ha agotado su llamada "ShowDialog"
Me parece un poco cojo, pero esas son las reglas. Si llama ShowDialog
de nuevo a obtener esta excepción:
No se puede establecer la visibilidad o llame Show, ShowDialog o WindowInteropHelper.EnsureHandle después de una ventana se ha cerrado
Lo que yo quiero saber es: ¿Cómo puedo tome un Window
(o UserControl
realmente) y verifique si se ha llamado al ShowDialog
(así sé new
hasta uno diferente antes de llamar al ShowDialog
nuevamente).
Algo como esto:
public void ShowListOfClients()
{
// | This is the method I want to write
// V
RefreshViewIfNeeded(_myWindowOrUserControlThatShowsAList);
FillWindowWithBusinessData(_myWindowOrUserControlThatShowsAList);
_myWindowOrUserControlThatShowsAList.ShowDialog();
}
NOTA: Es evidente que en el ejemplo anterior sería más fácil simplemente crear una nueva WindowOrUserControlThatShowsAList
cada vez que entro en el método. Pero por favor considere la pregunta más que el ejemplo simplificado.
Perdí el último. No puedo pensar en una // solución. –
Me gusta el delegado al método de cierre. Eso se ve bien. ¡Gracias! – Vaccano
Excepto que la primera sugerencia anterior específicamente no funciona para ventanas modales, es decir, con 'ShowDialog()'. Evitará la excepción, pero causa otros problemas, como no poder salir del proceso, y no mostrar la ventana correctamente la segunda vez que se hace visible. Solo la segunda sugerencia (es decir, siempre recreando la ventana) es viable. –