wpf 滑出侧边栏

XAML


    <Grid>
        <Grid.Resources>

            <!--  弹出边框动画, 边框宽度增加,背景蒙板显示  -->
            <Storyboard x:Key="ShowSide">
                <DoubleAnimation
                    Storyboard.TargetName="SideFrame" Storyboard.TargetProperty="Width" From="0" To="150"
                    Duration="0:0:0.5">
                    <DoubleAnimation.EasingFunction>
                        <CubicEase EasingMode="EaseOut" />
                    </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
                <DoubleAnimation
                    Storyboard.TargetName="MaskBorder" Storyboard.TargetProperty="Opacity" From="0" To="0.5"
                    Duration="0:0:0.5">
                    <DoubleAnimation.EasingFunction>
                        <CubicEase EasingMode="EaseOut" />
                    </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
            </Storyboard>

            <!--  隐藏边框动画, 边框宽度减少,背景蒙板隐藏  -->
            <Storyboard x:Key="HideSide">
                <DoubleAnimation
                    Storyboard.TargetName="SideFrame" Storyboard.TargetProperty="Width" To="0" Duration="0:0:0.5">
                    <DoubleAnimation.EasingFunction>
                        <CubicEase EasingMode="EaseOut" />
                    </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
                <DoubleAnimation
                    Storyboard.TargetName="MaskBorder" Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.5">
                    <DoubleAnimation.EasingFunction>
                        <CubicEase EasingMode="EaseOut" />
                    </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
            </Storyboard>

            <!--  方便设置测试按钮的样式  -->
            <Style BasedOn="{StaticResource {x:Type Button}}" TargetType="Button">
                <Setter Property="Width" Value="200" />
                <Setter Property="Height" Value="45" />
                <Setter Property="Margin" Value="12" />
            </Style>

        </Grid.Resources>

        <StackPanel
            Margin="24,0,0,0" HorizontalAlignment="Left"
            Orientation="Vertical">

            <Button Content="显示侧边栏">
                <Button.Triggers>
                    <!--  点击按钮调用显示动画  -->
                    <EventTrigger RoutedEvent="Button.Click">
                        <BeginStoryboard Storyboard="{StaticResource ShowSide}" />
                    </EventTrigger>
                </Button.Triggers>
            </Button>

            <Button Content="隐藏侧边栏">
                <Button.Triggers>
                    <EventTrigger RoutedEvent="Button.Click">
                        <BeginStoryboard Storyboard="{StaticResource HideSide}" />
                    </EventTrigger>
                </Button.Triggers>
            </Button>

        </StackPanel>

        <!--  背景蒙板, 防止点击到下面的内容  -->
        <Border
            x:Name="MaskBorder"
            Background="Gray" IsHitTestVisible="False" Opacity="0" />

        <!--  滑出框  -->
        <Grid
            x:Name="SideFrame"
            Width="150"
            HorizontalAlignment="Left"
            Background="Beige">

            <Grid.Triggers>

                <EventTrigger RoutedEvent="Loaded">
                    <!--  初始化时将边框先收起来  -->
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation
                                Storyboard.TargetName="SideFrame" Storyboard.TargetProperty="Width" To="0" Duration="0:0:0" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>

                <!--  鼠标点击时,调用隐藏动画  -->
                <EventTrigger RoutedEvent="PreviewMouseLeftButtonUp">
                    <BeginStoryboard Storyboard="{StaticResource HideSide}" />
                </EventTrigger>

            </Grid.Triggers>

            <Grid.Effect>
                <DropShadowEffect
                    BlurRadius="3" Opacity=".5" ShadowDepth="4" />
            </Grid.Effect>

            <TextBlock
                HorizontalAlignment="Center" VerticalAlignment="Center"
                FontSize="18" FontWeight="Black" Text="点击关闭" />

        </Grid>

    </Grid>
上一篇
下一篇