RoutedEvent TextBox.LostFocus在我的WPF应用程序中不工作

问题描述:

我正在使用故事板使用WPF动画。我想要的是在我的文本框获得焦点时尽快淡出页面的所有内容,并在焦点从文本框中移除后立即淡入淡出所有内容。要做到这一点,我有以下没有代码的XAML。RoutedEvent TextBox.LostFocus在我的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> 

将焦点移到了文本框,我有以下按钮:

<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"/> 

当我运行应用程序,点击文本框,使淡出做工精细。但是当我点击按钮时,淡入不会踢入。

任何人都可以给我一些见解吗?

你应该把你的触发器在TextBox直接,而不是在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> 

否则,故事板将被触发为每对Page因为每个UIElement的每一个GotFocusLostFocus路由事件这些事件的冒泡策略。

+0

谢谢你的解决方案,对我来说就像一个魅力。 :d –