MAUI中使用GoToAsync命令返回页面无动画的问题咨询
MAUI Shell返回导航无动画的原因及解决办法
问题原因
直接调用Shell.Current.GoToAsync("..")返回时无动画,核心原因是:
- MAUI Shell的系统返回按钮/导航栏返回按钮是内部封装的后退逻辑,会自动识别后退导航上下文,触发对应的反向滑入动画;
- 手动调用
GoToAsync("..")时,默认未显式指定动画参数,Shell不会自动启用后退动画——虽然官方文档说明导航需用GoToAsync,但不同调用场景的默认参数行为有差异,手动返回时需要明确开启动画。
解决办法
在调用GoToAsync时,显式传递Animated参数为true,让Shell触发后退动画:
[RelayCommand] Task Volver() { return Shell.Current.GoToAsync("..", new Dictionary<string, object> { { "Animated", true } }); }
也可以使用NavigationParameters类传递参数,效果一致:
[RelayCommand] Task Volver() { var navParams = new NavigationParameters(); navParams.Add("Animated", true); return Shell.Current.GoToAsync("..", navParams); }
添加参数后,返回主页面时就会和系统返回按钮一样,触发从左侧滑入的动画。
内容的提问来源于stack exchange,提问作者Álvaro García
相关产品推荐
相关产品推荐

