Un cuadro de diálogo de ventana WPF se muestra utilizando el método ShowDialog en la clase Ventana, como cuando se presiona un botón en la ventana principal, como este.WPF ShowDialog omitiendo excepciones durante la carga de la ventana
private void button1_Click(object sender, RoutedEventArgs e)
{
try
{
var window = new Window1();
window.ShowDialog();
}
catch (ApplicationException ex)
{
MessageBox.Show("I am not shown.");
}
}
la ventana tiene un evento Loaded suscrito en el XAML como esto:
<Window x:Class="Stackoverflow.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Loaded="Window_Loaded">
<Grid />
</Window>
se produce una excepción en el caso Window_Loaded
private void Window_Loaded(object sender, RoutedEventArgs e)
{
throw new ApplicationException();
}
Sin embargo, la excepción no es apresado por la tomar alrededor de la llamada ShowDialog, ni la devolución de llamadas. La excepción se traga y la ventana todavía se muestra.
¿Por qué sucede esto y cómo voy a manejar una excepción en el evento Window_Loaded de una ventana de WPF? ¿Debo atraparlo en el controlador de eventos y desechar la ventana manualmente?
En WinForms que necesita para llamar Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException)
el fin de permitir excepciones de burbujas a través ShowDialog llama. ¿Hay algún cambio similar que deba establecerse en WPF?
traté de reproducir su situación, pero sin éxito. Las excepciones se toman de la manera habitual. Supongo que tienes código simplificado, pero parece que el punto principal está en los detalles. Preséntelos e intentaré ayudar. –
Gracias por intentar reproducir. He reproducido el problema en un ejemplo muy simple desde donde tomé el código fuente publicado. Estoy usando VS2010. Editaré mi pregunta y agregaré información relevante para reproducir. – vidstige