有一个奇怪的问题,当我在 ContentPage 中时,我无法对 NavigationStack 进行任何修改。
我想要做的是添加一个新页面并在设备方向发生变化时删除页面中的前一个页面。
下面的代码应该处理更改页面的问题:
private async void DoTest()
{
Page originalRootPage = App.CurrentInitialized.Navigation.NavigationStack.Last();
await App.CurrentInitialized.Navigation.PushAsync(new HomePage_Landscape());
App.CurrentInitialized.Navigation.RemovePage(originalRootPage);
}
我在这个被覆盖的方法中调用了上面的代码:
protected override async void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
DeviceInfo.SetSize(width, height);
if (!DeviceInfo.IsOrientationPortrait())
{
MessagingCenter.Send<HomePage>(this, "Hi");
}
}
我使用了自己定义的类 DeviceInfo。但是,IsOrientationPortrait 检查设备的高度是否大于设备的宽度。
每当您触发命令时调用 DoTest 方法就可以了!但不是在方向变化期间。
如果有更好的方法可以在横向更改页面 UI 设计。请帮忙!