我的WPF EventTrigger出了什么问题?
本文关键字:什么 问题 WPF EventTrigger 我的 | 更新日期: 2023-09-27 18:10:44
我是WPF新手。我有一个问题使用EventTrigger。我有两个按钮(bt1和bt1)和一个StackPanel(StackPanel)在一个网格。
bt1和stackpanel首先是可见的。bt2是collapse
我有两个目标(仅用XAML完成):
-
当点击bt1时,stackpanel和bt1将被折叠,bt2将可见
-
当点击bt2时,stackpanel和bt1将可见。
我刚完成第一个目标。但是代码不起作用。有什么问题吗?
<Grid Name="Grid">
<StackPanel x:Name="stackpanel" Visibility="{Binding Path=Visibility, ElementName=bt1, Mode=TwoWay}">
<TextBlock Text="{Binding}" VerticalAlignment="Top"></TextBlock>
</StackPanel>
<Button Name="bt1" VerticalAlignment="Top" HorizontalAlignment="Right" Width="20" Height="20">
<Button.Style>
<Style>
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="stackpanel"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Collapsed}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="bt2"
Storyboard.TargetProperty="Visibility"
>
<DiscreteObjectKeyFrame Value="{x:Static Visibility.Visible}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Name="bt2" Visibility="Collapsed" VerticalAlignment="Top" HorizontalAlignment="Left"></Button>
</Grid>
这不起作用,因为stackpanel
和btn2
是在btn1.Style
的可视化树之外定义的。此外,不需要对btn1
进行样式化来实现这种行为。
所以不用Style.Triggers
:
<Button Name="bt1" >
<Button.Style>
<Style>
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
....
直接在你的Button.Trrigers
中定义你的EventTriggers
。
<Button Name="bt1" >
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
....