2017-01-31 1 views
0

Ich arbeite an einer WPF-Anwendung, in der ich eine Validierung mit einer Mischung aus IDataErrorInfo und Validierungsregeln mache. Zur Anzeige der Ergebnisse der Validierung zur Laufzeit habe ich einige Stile im XAML des Fensters erstellt. Eine dieser Arten sollten die Save-Taste so lange deaktivieren, da es ein Eingabefehler ist:Kann ich einen bestimmten Stil für die Ergebnisse der Validierung auf nur eine Schaltfläche anwenden?

<Window.Resources> 
    <!--Disabling the Save-button by style not viewmodel-property--> 
    <Style TargetType="{x:Type Button}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=tbx_firstname, Path=(Validation.HasError)}" Value="true"> 
       <Setter Property="IsEnabled" Value="False"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding ElementName=tbx_lastname, Path=(Validation.HasError)}" Value="true"> 
       <Setter Property="IsEnabled" Value="False"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding ElementName=tbx_age, Path=(Validation.HasError)}" Value="true"> 
       <Setter Property="IsEnabled" Value="False"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

Ich habe zwei Probleme:

  1. Der Stil deaktiviert alle Tasten auf dem Fenster. Was kann ich tun, um nur den Save-Button zu deaktivieren? Ich habe versucht, die folgenden, aber es scheint einen Syntax-Fehler zu sein (VS ist es nicht akzeptieren):

    <Style TargetType="{x:Name btn_save}"> 
    
  2. Im Stil für die Schaltfläche save-Ich habe jede Kontrolle zu überprüfen, die überprüft wird. Gibt es eine andere Möglichkeit, das Teil kürzer und weniger fehleranfällig zu machen (weil es mit dem Viewmodel kombiniert werden muss)?

Vielen Dank im Voraus!

Antwort

1

Wenn Sie Ihren Stil auf eine einzige Taste angewendet werden, anstatt sie alle, benötigen Sie einen Schlüssel, um den Stil zuzuweisen, zB:

<Style x:Key="SaveButtonStyle" TargetType="{x:Type Button}"> 

Auf diese Weise wird es nicht implizit angewendet werden, um alle Knöpfe. Um es auf Ihre Schaltfläche zu speichern, geben Sie explizit den Stil auf der Schaltfläche:

+0

Vielen Dank Manfred! Das habe ich vor einer Minute herausgefunden. Nur ein kleiner Schlüssel macht einen Unterschied. –

Verwandte Themen