我是WPF的新手。我在使用EventTrigger时遇到了问题。我在网格中有两个按钮(bt1和bt1)和一个stackpanel(堆栈面板)。
bt1和堆栈面板一开始是可见的。bt2崩溃了。
我有两个目标(仅在XAML中完成):
我刚完成了一个目标。但是代码不起作用。它有什么问题?
<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>发布于 2015-09-02 08:46:38
这不起作用,因为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">
....https://stackoverflow.com/questions/32345329
复制相似问题