2010-04-05 16 views
1

J'ai deux CheckBox et un TextBox. Je veux que TextBox ait IsEnabled = False si les deux CheckBox ont IsChecked = False. Puis-je faire cela avec un MultiTrigger? Je continue d'obtenir des erreurs en essayant d'utiliser la propriété Source.Référence multitrigueur WPF 2 autres contrôles

Je l'ai fonctionné avec MultiDataTriggers comme vous pouvez le voir ci-dessous. Mais ayez deux questions.

1) Est-ce mon seul choix? Puis-je le faire avec un MultiTrigger?

<TextBox.Style> 
    <Style TargetType="TextBox"> 
     <Style.Triggers> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding ElementName=uxDmm , Path=IsChecked}" 
            Value="False" /> 
        <Condition Binding="{Binding ElementName=uxGpm , Path=IsChecked}" 
            Value="False" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="IsEnabled" 
          Value="False" /> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBox.Style> 

2) Puis-je faire en dehors de l'étiquette? Je ne suis pas vraiment sûr d'où les Triggers peuvent être appliqués, la plupart des exemples le font dans Style ou DataTemplates, mais le définir dans un Style déconnecte mon apparence par défaut pour le TextBox.

Répondre

2
  1. La façon dont vous l'avez fait est correcte. Je ne suis pas sûr de la MultiTrigger, mais cette approche semble mieux de toute façon.
  2. Si vous voulez que votre Style être basé sur le style de zone de texte par défaut, procédez comme suit:

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">

+0

Merci Charlie. Je n'avais pas compris comment faire pour que le style dérive des styles par défaut en cascade que j'avais déjà. Votre syntaxe a corrigé cela. Je souhaite qu'il y avait une meilleure façon de définir les déclencheurs, en dehors d'un style cependant. Merci! – BrettRobi