プロパティのSet句内で関数を実行しようとすると、発生する例外がグローバル例外ハンドラーによってキャッチされることはありません。なぜそうなるのかわかりません。これが私のコードです(3つの部分)
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel_();
}
}
public class ViewModel_ : INotifyPropertyChanged
{
public ViewModel_()
{
}
public string Texting
{
get { return _Texting; }
set
{
_Texting = value;
OnPropertyChanged("Texting");
throw new Exception("BAM!");
}
}
private string _Texting;
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
MainWindow.xaml
<Window x:Class="TestExceptionHandling.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Text="{Binding Path=Texting,
UpdateSourceTrigger=PropertyChanged}" />
</Grid>
App.xaml.cs(グローバル例外ハンドラーがある場合)
public partial class App : Application
{
public App()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show("SOMETHING IS WRONG!");
}
}