2010-04-30 19 views
7

Mam ExceptionValidationRule na moim TextBox:ExceptionValidationRule nie reaguje na wyjątkami

<Window.Resources> 
    <Style x:Key="textStyleTextBox" TargetType="TextBox"> 
     <Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="true"> 
       <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

<TextBox x:Name="myTextBox" 
    {Binding Path=MyProperty, ValidatesOnExceptions=True}" 
    Style="{StaticResource ResourceKey=textStyleTextBox}" /> 

i MyProperty wygląda tak:

private int myProperty; 

public int MyProperty 
{ 
    get { return myProperty; } 
    set 
    { 
     if(value > 10) 
      throw new ArgumentException("LOL that's an error"); 
     myProperty = value; 
    } 
} 

W trybie DEBUG, awarii aplikacji z nieobsługiwany wyjątek "LOL that's an error" (WPF Binding Engine nie łapie tego i myślę, że powinien ...).

W trybie RELEASE wszystko działa poprawnie.

Czy ktoś może mi powiedzieć, dlaczego to się dzieje, do cholery,? I jak mogę to naprawić?

+0

Czy masz dołączone wydarzenie UnhandledException? – Krimson

Odpowiedz

8

Rozwiązanie nie jest tak oczywiste ani dobrze udokumentowane, ale dość proste. Powodem, dla którego program Visual Studio łamie wyjątki podczas uruchamiania w trybie debugowania, jest to, że jest skonfigurowany w ten sposób.

W menu Debuguj wybierz "Wyjątki ...". W tym oknie dialogowym kontrolujesz, w jaki sposób VS obsługuje wyjątki. Po prostu odznacz "User-nieobsługiwany" dla "Wyjątki środowiska wykonawczego języka wspólnego", naciśnij OK i ponownie uruchom swój projekt.

+0

Dziękuję bardzo. Łamałem sobie głowę z powodu tego samego problemu. Wielkie dzięki – Shee

+0

Tak więc, co dzieje się wyjątek jest zwolniony i WPF * nie * z wdziękiem go złapać. Czy Debugger nadal działa? –