के दौरान अपवादों को निगलने वाला एक WPF विंडो संवाद विंडो क्लास में ShowDialog विधि का उपयोग करके दिखाया जाता है जैसे कि मुख्य विंडो पर बटन दबाया जाता है।WPF ShowDialog विंडो लोड
private void button1_Click(object sender, RoutedEventArgs e)
{
try
{
var window = new Window1();
window.ShowDialog();
}
catch (ApplicationException ex)
{
MessageBox.Show("I am not shown.");
}
}
खिड़की एक लोडेड घटना इस तरह XAML में सदस्यता ली है:
<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>
एक अपवाद Window_Loaded घटना
private void Window_Loaded(object sender, RoutedEventArgs e)
{
throw new ApplicationException();
}
हालांकि अपवाद द्वारा catched नहीं है में फेंक दिया जाता है ShowDialog कॉल के आस-पास पकड़ो, न ही कॉल रिटर्न। अपवाद निगल लिया गया है और खिड़की अभी भी प्रदर्शित है।
ऐसा क्यों होता है और मैं एक WPF विंडो की विंडो_लोडेड घटना में अपवाद को संभालने के बारे में कैसे जाउंगा? क्या मुझे इसे ईवेंट-हैंडलर में पकड़ना है और विंडो को मैन्युअल रूप से निपटाना है?
WinForms में आप क्रम ShowDialog के माध्यम से कॉल अपवाद बुलबुला जाने के लिए में Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException)
कॉल करने के लिए की जरूरत है। क्या ऐसा कोई स्विच है जिसे WPF पर सेट करने की आवश्यकता है?
मैं अपनी स्थिति पुन: पेश करने की कोशिश की, लेकिन कोई सफलता के साथ। अपवाद सामान्य तरीके से पकड़े जाते हैं। मुझे लगता है कि आपने कोड को सरल बना दिया है, लेकिन ऐसा लगता है कि मुख्य बिंदु विवरण में है। उन्हें प्रदान करें और मैं मदद करने की कोशिश करूंगा। –
पुन: पेश करने की कोशिश करने के लिए धन्यवाद। मैंने समस्या को बहुत सरल उदाहरण में पुन: उत्पन्न किया है जहां से मैंने पोस्ट स्रोत कोड लिया था। मैं वीएस -2010 का उपयोग कर रहा हूँ। मैं अपना प्रश्न संपादित करूंगा और पुन: उत्पन्न करने के लिए कुछ प्रासंगिक जानकारी जोड़ूंगा। – vidstige