WPF页面效果

WPF页面效果,wpf,user-interface,Wpf,User Interface,我有一个窗口,其中一个页面位于一个框架中 <Grid Grid.Row="1" Margin="0,30,0,0" ClipToBounds="True"> <Frame x:Name="PageHostFrame" Grid.Row="1"/> </Grid> 是否可以使用WPF中的一些奇特技术从左向右滚动页面进入视图 例如,页面从窗口的最右边开始,所以左边的位置脱离屏幕,然后从它所在的框架的右边到左边移动(动画)。 这是不显示页面的初始状态 现在显

我有一个窗口,其中一个页面位于一个框架中

<Grid Grid.Row="1" Margin="0,30,0,0" ClipToBounds="True">
   <Frame x:Name="PageHostFrame" Grid.Row="1"/>
</Grid>
是否可以使用WPF中的一些奇特技术从左向右滚动页面进入视图

例如,页面从窗口的最右边开始,所以左边的位置脱离屏幕,然后从它所在的框架的右边到左边移动(动画)。
  • 这是不显示页面的初始状态
  • 现在显示页面。它从框架开始使用,然后滚动以适应框架。所以它的左边位置是0

  • 这确实是可能的,但这是一项相当艰巨的工作。您需要从输入和输出UI的
    Visual
    s中制作一个
    VisualBrush
    ,然后设置它们在屏幕上滑动的动画,然后移除旧的UI屏幕,然后用实际控件切换“绘制的”UI


    当然,让别人来做这项工作要容易得多,所以为什么不看看CodePlex呢?我以前用过它,它确实简化了事情。还有更多的转换可用。。。想想Microsoft Powerpoint转换。

    试试这个..如果我错了,很抱歉

     <Frame Background="White" x:Name="PageName">
        <Frame.Content>
            <Page  Background="LightBlue" > 
                <Page.Style>
                    <Style TargetType="Page">                        
                        <Setter Property="RenderTransformOrigin" Value="0.3,0"></Setter>
                        <Setter Property="RenderTransform">
                            <Setter.Value>
                                <TranslateTransform x:Name="st" X="0"></TranslateTransform>
                            </Setter.Value>
                        </Setter>
                        <Style.Triggers>
                            <EventTrigger RoutedEvent="Loaded">
                                <BeginStoryboard>
                                    <Storyboard >
                                        <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" From="1376"   AccelerationRatio="0.3" To="0" Duration="0:0:0.6">
                                            <DoubleAnimation.EasingFunction>
                                                <ExponentialEase EasingMode="EaseOut"></ExponentialEase>
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </Style.Triggers>
                    </Style>                   
                </Page.Style>
            </Page>
        </Frame.Content>
    </Frame>
    
    
    

    您也可以使用scaletransform,对于上述代码,请根据您的要求调整持续时间和宽度。谢谢。

    简而言之,您希望在加载网格时从左向右移动网格。抱歉,我不明白。这就是为什么问您的原因。我已更新了问题。
     <Frame Background="White" x:Name="PageName">
        <Frame.Content>
            <Page  Background="LightBlue" > 
                <Page.Style>
                    <Style TargetType="Page">                        
                        <Setter Property="RenderTransformOrigin" Value="0.3,0"></Setter>
                        <Setter Property="RenderTransform">
                            <Setter.Value>
                                <TranslateTransform x:Name="st" X="0"></TranslateTransform>
                            </Setter.Value>
                        </Setter>
                        <Style.Triggers>
                            <EventTrigger RoutedEvent="Loaded">
                                <BeginStoryboard>
                                    <Storyboard >
                                        <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" From="1376"   AccelerationRatio="0.3" To="0" Duration="0:0:0.6">
                                            <DoubleAnimation.EasingFunction>
                                                <ExponentialEase EasingMode="EaseOut"></ExponentialEase>
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </Style.Triggers>
                    </Style>                   
                </Page.Style>
            </Page>
        </Frame.Content>
    </Frame>