WinUI3开发_Frame用法

发布于:2025-07-22 ⋅ 阅读:(18) ⋅ 点赞:(0)

什么是Frame?

WinUI3中,Frame是用于页面导航的控件,它类似于一个内容容器,支持在不同Page之间切换,一般NavigationView就是采用Frame来做页面切换,并且Frame还自带切换动画,下面是Frame的演示:
请添加图片描述

在WinUI3中使用它

想要在WinUI3中使用它非常简单,只需要在XAML里定义出来就可以了:

<Frame x:Name="contentFrame" />

关键点在于加载不同的页面,Frame提供了NavigateApi用于加载不同的页面,下面是它的一个加载页面的示例:

contentFrame().Navigate(winrt::xaml_typename<App1::BlankPage>());

BlankPage为你的子Pagexaml_typename用于将页面转换成为Navigate所需要的数据类型,Navigate需要的是一个包含XAML元数据的TypeName类型,而xaml_typename则是用于将Page转换成为Navigate所需要带有XAML元数据的TypeName类型

**Tips
使用xaml_typename需要包含#include <winrt/Windows.UI.Xaml.Interop.h>头文件

Navigate接受三个参数:
Windows::UI::Xaml::Interop::TypeName const& sourcePageType: 要加载的页面
IInspectable const& parameter: 给页面传递的参数,需要子页面实现OnNavigatedTo,一般传递父页面的This用于与子页面交互
Windows::UI::Xaml::Navigation::NavigationTransitionInfo const& transitionInfo: 页面载入时的动画效果
下面是动画演示:

  • EntranceNavigationTransitionInfo 页面从下方边缘滑入,一般用于首次加载,Navigate默认使用该动画效果
  • DrillInNavigationTransitionInfo 页面缩放进入
  • SlideNavigationTransitionInfo 页面从指定方向进入可以通过Effect设置方向
  • SuppressNavigationTransitionInfo 无动画
    下面是代码示例:
 auto anima= winrt::Microsoft::UI::Xaml::Media::Animation::EntranceNavigationTransitionInfo {};
 contentFrame().Navigate(winrt::xaml_typename<App1::BlankPage>(), nullptr, anima);

当使用SlideNavigationTransitionInfo时可以通过Effect来设置方向:

anima.Effect(SlideNavigationTransitionEffect::FromRight);

SlideNavigationTransitionEffect取值如下:

enum class SlideNavigationTransitionEffect : int32_t
{
    FromBottom = 0,
    FromLeft = 1,
    FromRight = 2,
};

网站公告

今日签到

点亮在社区的每一天
去签到