我是WPF的新手。我使用EventTrigger时遇到问题。 我在网格中有两个按钮(bt1和bt1)和一个StackPanel(stackpanel)。
bt1和stackpanel最初是可见的。并且bt2是崩溃的。
我有两个目标(仅在XAML中完成):
当点击bt1时,stackpanel和bt1将被折叠,bt2将是可见的。
单击bt2时,stackpanel和bt1将为Visible。 bt2将会崩溃。
我刚完成了目标。但是代码没有用。它有什么问题?
<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>
答案 0 :(得分:0)
这不起作用,因为stackpanel
和btn2
定义为btn1.Style
的可视树 。此外,没有必要设置btn1
样式来实现这种行为。
因此,而不是使用Style.Triggers
:
<Button Name="bt1" >
<Button.Style>
<Style>
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
....
直接在EventTriggers
。
Button.Trrigers
<Button Name="bt1" >
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
....