我的WPF EventTrigger出了什么问题?

时间:2015-09-02 05:36:00

标签: c# wpf eventtrigger

我是WPF的新手。我使用EventTrigger时遇到问题。 我在网格中有两个按钮(bt1和bt1)和一个StackPanel(stackpanel)。

bt1和stackpanel最初是可见的。并且bt2是崩溃的。

我有两个目标(仅在XAML中完成):

  1. 当点击bt1时,stackpanel和bt1将被折叠,bt2将是可见的。

  2. 单击bt2时,stackpanel和bt1将为Visible。 bt2将会崩溃。

  3. 我刚完成了目标。但是代码没有用。它有什么问题?

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

1 个答案:

答案 0 :(得分:0)

这不起作用,因为stackpanelbtn2定义为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">
        ....