如何使用DoubleAnimation处理同一窗口中的两个网格以显示和消失?

时间:2010-11-04 12:34:34

标签: c# wpf animation grid

我认为我的问题的标题是一些混乱!遗憾!

我在同一个窗口中有两个Grid。第一个名为loginBox,第二个名为operationBox。我想在验证用户后使用loginBox类消失DoubleAnimation,然后operationBox将同时出现(在00:00:01期间)。

情景:

  1. 显示窗口时显示名为loginBox的网格。用户点击btnLogin后,loginBox开始使用DoubleAnimation属性Opacity开始消失,同时operationBox将使用相同的技术显示。

  2. 结束操作后,用户点击btnLogoutoperationBox开始消失,loginBox显示DoubleAnimation

  3. 问题是因为operationBox网格超过loginBox网格,用户无法在loginbox中执行任何操作!但是operationBox.Opacity=0;但是在启动时没有任何关于loginBox网格的内容!

    CODE:

    <!--Login Box-->
            <Grid Background="Transparent" Name="loginBox" VerticalAlignment="Center" HorizontalAlignment="Center">
                <Button Content="ورود" Height="23" HorizontalAlignment="Left" Margin="344,199,0,0" Name="btnLogin" VerticalAlignment="Top" Width="75" IsDefault="True"
                        Click="btnLogin_Click" >
                    <Button.Triggers>
                        <EventTrigger RoutedEvent="Button.Click">
                            <BeginStoryboard>                            
                                <Storyboard>                                
                                    <DoubleAnimation 
                                        Storyboard.TargetName="loginBox"
                                        Storyboard.TargetProperty="(Grid.Opacity)" 
                                        From="1" To="0" Duration="0:0:1" AutoReverse="False" />
                                    <DoubleAnimation 
                                        Storyboard.TargetName="operationBox"
                                        Storyboard.TargetProperty="(Grid.Opacity)" 
                                        From="0" To="1" Duration="0:0:1" AutoReverse="False" />
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Button.Triggers>
                </Button>
    .
    .
    .
    </Grid>
    
    .
    .
    .
    
            <!--Operation Box-->
            <Grid Background="Transparent" Name="operationBox" Opacity="0" Visibility="Hidden">
    ...
                <Button Content="خروج" Height="23" 
                        HorizontalAlignment="Left" Margin="15,324,0,0" Name="btnLogout" 
                        VerticalAlignment="Top" Width="75" Click="btnLogout_Click">
                    <Button.Triggers>
                        <EventTrigger RoutedEvent="Button.Click">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation 
                                        Storyboard.TargetName="operationBox"
                                        Storyboard.TargetProperty="(Grid.Opacity)" 
                                        From="1" To="0" Duration="0:0:1" AutoReverse="False" />
    
                                    <DoubleAnimation 
                                        Storyboard.TargetName="loginBox"
                                        Storyboard.TargetProperty="(Grid.Opacity)" 
                                        From="0" To="1" Duration="0:0:1" AutoReverse="False" />
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Button.Triggers>
                </Button>
            </Grid>
    

    最后,抱歉语法不好! :)

1 个答案:

答案 0 :(得分:1)

尝试添加operationBox.IsHitTestVisible =“False”

<强>更新

尝试添加类似

的内容
<Grid Grid.ZIndex="4" Background="Green" Opacity="0.4" Name="loginBox" VerticalAlignment="Center" HorizontalAlignment="Center">
    <Grid.Style>
        <Style>
            <Style.Triggers>
                <Trigger Property="Grid.Opacity" Value="0.0">
                    <Setter Property="Grid.IsHitTestVisible" Value="False"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
<!-- ... -->