wpf中窗后滑动表单

0ve6wy6x  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(99)

将此端口连接到WPF
Slide form base Windos Forms
我想把这个移植到WPF,你认为这是可能在WPF?
Slide form base
我来测试一下:
wpf-animation-how-do-i-make-it-slide-in
还有这个:
open-close-popup-with-slide-animation-from-custom-position
我想创建一个类似macosx的抽屉
enter image description here

yquaqz18

yquaqz181#

如果你在Winforms上的第一个gif上显示的效果,抽屉从窗体下面滑动,要在WPF上实现类似的效果,你需要处理几个可能的问题。
首先,为了看到Window外面的抽屉,你需要将AllowTransparency设置为True,将WindowStyle设置为None。
这是第一个问题,因为你现在缺少默认的窗口功能,如最小化,最大化,拖动和关闭。更不用说现在也缺少窗口默认DropShadow效果,如果你想拥有它,你需要自己创建它。
其次,responsivness,由于WindowStyle为None,因此也缺少Window的Resize功能。如果您想恢复它,现在还有更大的问题,您需要非常小心布局,并确保RenderTransform.TranslateLayout的所有值都是正确的,以便在Window的大小发生变化时将抽屉移动到所需的值。
说了这么多,下面是我的建议,如何实现幻灯片效果。

<Window x:Class="WpfApp8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp8"
        Title="MainWindow"
        WindowStyle="None"
        AllowsTransparency="True"
        Background="Transparent"
        mc:Ignorable="d">

    <Grid Width="400" Height="400">
        <Grid.Resources>
            <Storyboard x:Key="TransformBorder">
                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="movingBorder"
                                               Storyboard.TargetProperty="(Border.RenderTransform).(TranslateTransform.X)"
                                               Duration="0:0:0.3">
                    <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="400">
                        <EasingDoubleKeyFrame.EasingFunction>
                            <QuadraticEase EasingMode="EaseInOut"/>
                        </EasingDoubleKeyFrame.EasingFunction>
                    </EasingDoubleKeyFrame>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </Grid.Resources>

        <Border x:Name="movingBorder"
                Background="LightBlue"
                RenderTransformOrigin="0.5,0.5">
            <Border.RenderTransform>
                <TranslateTransform x:Name="translateTransform" X="0" Y="0"/>
            </Border.RenderTransform>
        </Border>

        <Border Background="White">
            <Button x:Name="btnSlide"
                    Width="100"
                    Height="50"
                    Content="Slide"/>
            <Border.Effect>
                <DropShadowEffect ShadowDepth="0"
                                  Opacity="0.5"
                                  BlurRadius="20"
                                  Color="Black"/>
            </Border.Effect>
        </Border>

        <Grid.Triggers>
            <EventTrigger RoutedEvent="Button.Click" SourceName="btnSlide">
                <BeginStoryboard Storyboard="{StaticResource TransformBorder}"/>
            </EventTrigger>
        </Grid.Triggers>
    </Grid>
</Window>

字符串
https://imgur.com/LB7EVEo

相关问题