2010-06-02 18 views
0

J'ai construit une application WPF et réussi à faire fonctionner la validation grâce aux messages sur stackoverflow. Le seul problème que j'ai est de remplacer le thème que j'utilise. exemple, le texte fait ressembler les zones de texte à un rectangle rond, mais après avoir défini la liaison, il ressemble aux zones de texte par défaut. voici mon code:La validation des données WPF est un thème prioritaire sur l'interface

<Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Setter Property="IsEnabled" Value="false" /> 

       <Style.Triggers> 
       <!-- Require the controls to be valid in order to press OK --> 
       <MultiDataTrigger> 
         <MultiDataTrigger.Conditions> 
          <Condition Binding="{Binding ElementName=txtEmail, Path=(Validation.HasError)}" Value="false" /> 

         </MultiDataTrigger.Conditions> 
         <Setter Property="IsEnabled" Value="true" /> 
        </MultiDataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 

code est derrière:

//Form loaded event code 
txtEmail.GetBindingExpression(TextBox.TextProperty).UpdateSource(); 

J'ai essayé de regarder dans le fichier thème, mais je me lost.i rapidement pensé que je pouvais utiliser ce fichier comme un css web file.Now j'ai désactivé la liaison de données à cause de cela. Y a-t-il du travail pour cela? Merci d'avoir lu ceci

Répondre

2

Vous ne savez pas si c'est le problème racine, mais essayez d'ajouter BasedOn="{StaticResource {x:Type Button}}" à l'élément de style.

Button.Style> 
      <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
... 
+0

C'est correct. Un élément ne peut appliquer qu'un seul style en même temps. Pour combiner des styles, l'approche la plus simple consiste à "hériter" un style de base (votre thème) du nouveau style appliqué à l'élément. – hemp

+0

remercie l'homme. cela sauve vraiment mon tracas.thanks encore !!! –