2017-08-29 5 views
0

Je travaille avec les animations WPF à l'aide de Storyboards. Ce que je veux, c'est que tout le contenu de la page disparaisse dès que ma zone de texte est mise au point, et que tout disparaisse dès que le focus est supprimé de la zone de texte. Pour ce faire, j'ai le XAML suivant sans code derrière.RoutedEvent TextBox.LostFocus ne fonctionne pas dans mon application WPF

<Page.Triggers> 
    <EventTrigger RoutedEvent="TextBox.GotFocus"> 
    <BeginStoryboard> 
     <Storyboard> 
      <DoubleAnimation 
       Storyboard.TargetName="Grid1" 
       Storyboard.TargetProperty="Opacity" 
       From="1" To="0.1" Duration="0:0:0.2" 
       AutoReverse="False" > 
      </DoubleAnimation> 
     </Storyboard> 
    </BeginStoryboard> 
    </EventTrigger> 
    <EventTrigger RoutedEvent="TextBox.LostFocus"> 
    <BeginStoryboard> 
     <Storyboard> 
      <DoubleAnimation 
       Storyboard.TargetName="Grid1" 
       Storyboard.TargetProperty="Opacity" 
       From="0.1" To="1" Duration="0:0:0.2" 
       AutoReverse="False"> 
      </DoubleAnimation> 
     </Storyboard> 
    </BeginStoryboard> 
    </EventTrigger> 

Pour déplacer le focus sur zone de texte, je le bouton suivant:

<Button 
     Name="SearchButton" 
     Height="30" Width="30" 
     Grid.Column="1" 
     Focusable="True" 
     IsHitTestVisible="True" 
     Style="{StaticResource SearchButton}" 
     Padding="3,3,3,3" 
     Margin="3,3,3,3" Click="Button_Click"/> 

Quand je lance l'application, en cliquant sur la zone de texte fait le fondu excellent travail. Mais quand je clique sur le bouton, le fondu ne démarre pas.

Quelqu'un peut-il me donner quelques idées?

Répondre

0

Vous devez placer vos déclencheurs dans le TextBox directement, pas au niveau Page:

<TextBox> 
    <TextBox.Triggers> 
     <EventTrigger RoutedEvent="TextBox.GotFocus"> 
     <BeginStoryboard> 
      <Storyboard> 
      <DoubleAnimation 
       Storyboard.TargetName="Grid1" 
       Storyboard.TargetProperty="Opacity" 
       From="1" To="0.1" Duration="0:0:0.2" 
       FillBehavior="HoldEnd"> 
      </DoubleAnimation> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="TextBox.LostFocus"> 
     <BeginStoryboard> 
      <Storyboard> 
      <DoubleAnimation 
       Storyboard.TargetName="Grid1" 
       Storyboard.TargetProperty="Opacity" 
       From="0.1" To="1" Duration="0:0:0.2" 
       FillBehavior="Stop"> 
      </DoubleAnimation> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger> 
    </TextBox.Triggers> 
    </TextBox> 

Dans le cas contraire, les storyboards seront déclenchées pour chaque GotFocus et LostFocus événement routé de chaque UIElement sur le Page parce que de la stratégie bouillonnante de ces événements.

+0

Merci pour la solution, fonctionne comme un charme pour moi. :RÉ –