首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的WPF EventTrigger怎么了?

我的WPF EventTrigger怎么了?
EN

Stack Overflow用户
提问于 2015-09-02 05:35:59
回答 1查看 272关注 0票数 1

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

bt1和堆栈面板一开始是可见的。bt2崩溃了。

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

  1. 当单击bt1时,堆栈面板和bt1将被折叠,bt2将可见。
  2. 单击bt2时,堆栈面板和bt1将是可见的。bt2将崩溃。

我刚完成了一个目标。但是代码不起作用。它有什么问题?

代码语言:javascript
运行
复制
    <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>
EN

回答 1

Stack Overflow用户

发布于 2015-09-02 08:46:38

这不起作用,因为stackpanelbtn2是在btn1.Style可视树的之外定义的。此外,没有必要通过样式btn1来实现这种行为。

因此,不要使用Style.Triggers

代码语言:javascript
运行
复制
<Button Name="bt1" >
    <Button.Style>
        <Style>
            <Style.Triggers>
                <EventTrigger RoutedEvent="Button.Click">
                ....

直接在EventTriggers中定义Button.Trrigers

代码语言:javascript
运行
复制
<Button Name="bt1" >
    <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
        ....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32345329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档