我的WPF EventTrigger出了什么问题?

本文关键字:什么 问题 WPF EventTrigger 我的 | 更新日期: 2023-09-27 18:10:44

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

bt1和stackpanel首先是可见的。bt2是collapse

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

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

  2. 当点击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>

我的WPF EventTrigger出了什么问题?

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