WinUI模板工作室页面导航:如何阻止页面上滑
解决WinUI Template Studio项目页面导航上滑动画问题
这个上滑效果是WinUI默认的导航转场动画,可以通过以下几种方式禁用:
方法1:全局禁用Frame导航动画
多数Template Studio模板使用Frame作为导航容器,直接修改Frame的转场设置即可全局关闭动画:
代码后台方式
在App.xaml.cs中找到初始化Frame的代码段,添加如下设置:
var rootFrame = Window.Current.Content as Frame; // 清空默认转场动画集合 rootFrame.ContentTransitions = null;
XAML方式
如果在主页面XAML中定义了Frame,直接设置其ContentTransitions为空集合:
<Frame x:Name="RootFrame"> <Frame.ContentTransitions> <TransitionCollection /> </Frame.ContentTransitions> </Frame>
方法2:针对单个页面禁用动画
如果只想关闭特定页面的导航上滑效果,在目标页面的代码后台(如YourPage.xaml.cs)中修改:
protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); // 移除当前页面的所有转场动画 this.Transitions = null; }
方法3:NavigationView模板专用
如果项目用的是NavigationView模板,可在导航触发逻辑中指定禁用转场:
在MainPage.xaml.cs的NavigationView_ItemInvoked事件处理里,将导航参数替换为SuppressNavigationTransitionInfo:
private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args) { if (args.IsSettingsInvoked) { _frame.Navigate(typeof(SettingsPage), null, new SuppressNavigationTransitionInfo()); } else { var navItemTag = args.InvokedItemContainer.Tag.ToString(); var pageType = Type.GetType($"YourProjectNamespace.{navItemTag}Page"); if (pageType != null) { _frame.Navigate(pageType, null, new SuppressNavigationTransitionInfo()); } } }
根据你的项目结构选择对应方法即可完全阻止页面导航时的上滑效果。
内容的提问来源于stack exchange,提问作者Webbert
相关产品推荐
相关产品推荐

