Estoy escribiendo una aplicación (C# + wpf) donde todos los cuadros de diálogo de estilo modal se implementan como UserControl
en la parte superior de una cuadrícula translúcida que cubre el Window
principal. Esto significa que solo hay un Window
y mantiene la apariencia de todas las aplicaciones de la empresa.Emulando la funcionalidad de ShowDialog
mostrar un MessageBox
, la sintaxis es la siguiente:
CustomMessageBox b = new CustomMessageBox("hello world");
c.DialogClosed +=()=>
{
// the rest of the function
}
// this raises an event listened for by the main window view model,
// displaying the message box and greying out the rest of the program.
base.ShowMessageBox(b);
Como se puede ver, no sólo es el flujo de ejecución realidad invertida, pero su horrible detallado en comparación con la versión clásica .NET:
MessageBox.Show("hello world");
// the rest of the function
lo que realmente estoy buscando es una manera de no volver a base.ShowMessageBox
hasta que el evento cerrado de diálogo ha sido planteada por él, pero no puedo ver cómo es posible esperar a que este sin colgar el hilo GUI y por lo tanto evitando que nosotros siempre haciendo clic en Aceptar. Soy consciente de que puedo tomar una función de delegado como un parámetro para la función ShowMessageBox
que impide la inversión de la ejecución, pero aún causa una sintaxis/sangría loca.
¿Me falta algo obvio o hay una forma estándar de hacerlo?
El primer artículo vinculado muestra un ejemplo perfecto de cómo hacerlo. – Guy