我有我使用Frame.Navigate()方法很多UWP应用。默认情况下,它似乎与动画,使下一个屏幕出现从底部滑动来进行过渡。然而,对于我来说,它更有意义,如果下一个画面来自左边或右边。
所以,要改变这种默认行为,我用下面的代码this MSDN document:
// Navigate to the right, ie. from LeftPage to RightPage
myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { SlideNavigationTransitionEffect.FromRight } );
// Navigate to the left, ie. from RightPage to LeftPage
myFrame.Navigate(typeof(LeftPage), null, new SlideNavigationTransitionInfo() { SlideNavigationTransitionEffect.FromLeft } );
但我得到这个错误:
不能与集合初始化初始化类型“SlideNavigationTransitionInfo”,因为它没有实现“System.Collections.IEnumerable”
改变这样的代码
myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight } );
使应用程序通过无效的转换异常崩溃。
这是我更新,所以我怀疑可能导致的问题,我更新的目标版本的旧的应用程序。现在,靶向部分是这样的:
目标版本:1809(10.0;建立17763);
我的版本:(10.0; 10240)
但尽管如此,问题依然存在。不知道如何解决这个问题?
如果你愿意,你可以简单地使用XAML页面转换,它也分钟版10240兼容的:只要把下面的线在你RightPage或LeftPage XAML源。
<Page.Transitions>
<TransitionCollection>
<EdgeUIThemeTransition Edge="Left">
</EdgeUIThemeTransition>
</TransitionCollection>
</Page.Transitions>
所述第一语法误差相当言自明;而InvalidCastException的似乎是由事实造成的,你是比1809低版本的操作系统上运行的代码你。
SlideNavigationTransitionEffect Enum是在1809年加入您可以编译代码成功,因为你已经安装了SDK为1809年,但在运行时,如果你不事先检查,这个代码,如果运行时不支持它失败。
//remove this from your code and it should be running well
Effect = SlideNavigationTransitionEffect.FromRight
在这种情况下,您可以设置最低版本为1809,强制执行这个程序只能在1809或更高版本安装。或者,你可以写version adaptive code检查OS支持的API,通过这种方式,你可以让你闵版本低期望的目标更广泛的设备。