2009-11-11 3 views
0

Je souhaite activer le bouton de dialogue 'Appliquer' lorsque le contenu de certaines zones de texte de ce dialogue change.Etat du bouton 'Appliquer' du dialogue de déclenchement

Voici ce que je suis venu avec:

<Window.Resources> 
    <ResourceDictionary> 
     ... 
     <Style x:Key="SettingTextBoxStyle" TargetType="{x:Type TextBox}"> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="TextBox.TextChanged" > 

        <!-- I need something like this --> 
        <Setter Property="ApplyButton.IsEnabled" Value="True" /> 

       </EventTrigger> 
      </Style.Triggers> 
     </Style> 
    </ResourceDictionary> 
</Window.Resources> 

<!-- in a galaxy far far away --> 
<StackPanel> 
     ... 
     <TextBox Style="{StaticResource SettingTextBoxStyle}" Text="{Binding Source={x:Static settings:Settings.Default}, Path=OutputFile}" /> 
</StackPanel> 

<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right"> 
    <Button Content="OK" Width="100" Click="OK_Click"/> 
    <Button Content="Cancel" Width="100" Click="Cancel_Click" /> 
    <Button Content="Apply" Name="ApplyButton" Width="100" Click="Apply_Click"/> 
</StackPanel> 

Comment puis-je atteindre ApplyButton.IsEnabled bien dans mon événement déclencheur?

Devrais-je plutôt tout simplement utiliser le même gestionnaire d'événements TextChanged dans le code retour?

Ou autre chose?

Répondre

0

vous pouvez essayer ceci:

<Grid> 
    <TextBox Name="textBox" Height="28" VerticalAlignment="Top" HorizontalAlignment="Left" Width="95" > 
     <TextBox.Triggers> 
      <EventTrigger RoutedEvent="TextBox.TextChanged"> 
       <BeginStoryboard> 
        <Storyboard> 
         <BooleanAnimationUsingKeyFrames Storyboard.TargetName="button1" Storyboard.TargetProperty="(Button.IsEnabled)"> 
          <DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True"/> 
         </BooleanAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </TextBox.Triggers> 
    </TextBox>    
    <Button Height="26" Width="150" IsEnabled="false" Name="button1">Button</Button> 
</Grid> 
+0

'propriété TargetName ne peut pas être sur un style Setter. Et j'ai besoin d'un style puisque certaines zones de texte dans cette boîte de dialogue .. eh .. ne sont pas liées aux paramètres. Merci quand même. – jonny

+0

ouais, j'ai vérifié cela, c'est pourquoi j'ajoutais EventTrigger aux déclencheurs de TextBox au lieu de l'utiliser dans le style. Dans votre cas, vous pouvez également utiliser les commandes. – viky

+0

vous en prie, de quelle manière? – jonny

Questions connexes