UWP页面转换,更改动画方向

t.m*_*.m. 1 c# win-universal-app uwp

我有UWP应用程序,我使用Frame.Navigate()方法很多.默认情况下,它似乎是使用动画执行转换,使下一个屏幕从底部滑动.但是,对于我的情况,如果下一个屏幕来自右侧或左侧,则更有意义.

因此,要更改此默认行为,我使用了此MSDN文档中的以下代码:

// 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 } );
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

无法使用集合初始值设定项初始化类型'SlideNavigationTransitionInfo',因为它没有实现'System.Collections.IEnumerable'

改变这样的代码

myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight } );
Run Code Online (Sandbox Code Playgroud)

导致应用程序因无效的强制转换异常而崩溃.

这是一个我正在更新的旧应用程序,所以我怀疑这可能会导致问题,我更新了目标版本.现在目标部分看起来像:

目标版本:1809(10.0; Build 17763);

最低版本:(10.0; 10240)

但问题仍然存在.不知道怎么解决这个问题?

ken*_*yzx 6

第一个语法错误是不言自明的; 而InvalidCastException似乎是由于您在版本低于1809的操作系统上运行代码而引起的.

SlideNavigationTransitionEffect枚举是在1809年添加的.您可以成功编译代码,因为您已经安装了1809的SDK,但是在运行时,如果您事先没有检查,如果运行时不支持,则此代码会失败.

//remove this from your code and it should be running well
Effect = SlideNavigationTransitionEffect.FromRight 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以将Min版本设置为1809,强制执行此应用程序只能安装在1809或更高版本.或者您可以编写版本自适应代码来检查API对操作系统的支持,这样,您可以将最低版本保持在所需的最低值,以便针对更广泛的设备.

  • 感谢您提供如此全面的答案+1.它还帮助我解决了与此操作系统版本问题相关的其他问题.然而,其他解决方案很简单并且消除了后向兼容性问题,我认为这对谷歌来说更好. (2认同)