2009-10-09 68 views
3

我正在嘗試使用WPF和MVVM模式構建應用程序。我的視圖是純粹通過數據綁定從ViewModel填充的。我希望有一箇中心位置來處理髮生在我的應用程序中的所有異常,以便我可以通知用戶並適當地記錄錯誤。處理WPF和MVVM的異常

我知道Dispatcher.UnhandledException,但是這不會做作爲數據綁定期間發生的異常記錄到輸出窗口的工作。因爲我的View是綁定到我的ViewModel的,所以整個應用程序幾乎都通過數據綁定來控制,所以我沒有辦法記錄我的錯誤。

有沒有辦法一般地處理在數據綁定期間引發的異常,而不必在我的所有ViewModel公共模塊上放置try塊?

示例View:

<Window x:Class="Test.TestView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="TestView" Height="600" Width="800" 
    WindowStartupLocation="CenterScreen"> 
    <Window.Resources> 
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
    </Window.Resources> 
    <StackPanel VerticalAlignment="Center"> 
     <Label Visibility="{Binding DisplayLabel, Converter={StaticResource BooleanToVisibilityConverter}}">My Label</Label> 
    </StackPanel> 
</Window> 

視圖模型:

public class TestViewModel 
{ 
    public bool DisplayLabel 
    { 
     get { throw new NotImplementedException(); } 
    } 
} 

這是一個內部應用程序,所以我不想用疫情週報,因爲我已經看到了以前推薦。

+0

請參閱此問題和答案:http://stackoverflow.com/questions/2171580/exceptions-are-swallowed-in-my-wpf-application-how-to-force-application-to-crash – 2010-02-28 21:41:45

回答

1

綁定實現被設計爲容錯,因此它捕獲所有的異常。你可以做的是在你的綁定激活以下屬性:

  • ValidatesOnExceptions =真
  • NotifyOnValidationError =真

又見MSDN

這會導致在綁定控件上引發附加的Error屬性。

但是,此基礎結構旨在驗證用戶輸入並顯示驗證消息。我不確定這是你在做什麼。