Я новичок в WPF, использую VS2010 beta2, .NET 4.0.
Throw new Exception("test")
в моем коде просто проглатывает исключение и приложение не падает.
Это не то, что я ожидаю, я хочу, чтобы приложение зависало при возникновении необработанного исключения.
Есть ли простой способ добиться этого?
Также не выполняется ни Application.DispatcherUnhandledException
, ни AppDomain.UnhandledException
. Вероятно, это связано с тем, что весь код выполняется как часть привязки данных (я использую шаблон MVVM, а в конструкторе ViewModel создается исключение).
Во время отладки я могу заглянуть в окно вывода и выяснить, что не так. Но мне кажется странным, что приложение просто игнорирует ошибку, оставляет пользовательский интерфейс в неправильном состоянии и не вылетает.
Edit:
Похоже, что при привязке данных могут возникнуть только некритические исключения привязки. Возможно, решение проблемы может быть связано с извлечением функциональности, которая не имеет прямого отношения к привязке (например, подключение к базе данных), из выполнения привязки. Однако я не уверен, как этого добиться в MVVM.
Упрощенный пример:
XAML:
<DataTemplate DataType="{x:Type vm:ItemViewModel}">
<vw:ItemControl />
</DataTemplate>
<ContentControl
Content="{Binding Path=MyItem}"
/>
где MyItem
создает и возвращает экземпляр ItemViewModel
. Проблема в том, что конструктор ItemViewModel
выполняется как часть привязки данных, и я не уверен, является ли это хорошей практикой (этот конструктор содержит код, который может дать сбой - например, если база данных недоступна).