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
的每一个GotFocus
和LostFocus
路由事件这些事件的冒泡策略。
谢谢你的解决方案,对我来说就像一个魅力。 :d –