所以我有一个代码,我应该转换为MAUI从XAMARIN.问题是,我写了一个代码,有点使自己的页面与信息.所有的功能在信息部分工作正常.问题是,当它应该打开的页面,它充满了信息,基本上页面不会打开。在XAMARIN版本中,我们创建了一个NavigationManager来导航页面。每当它来到导航方法时,它说它是null。这不是我第一次遇到这个问题。当我第一次遇到这个问题时,我下载了Microsoft.Maui.Controls附带的NavigatableElement NuGet包。这是我最初修复它的方法:
private async void DataPacketsButton_Clicked(object sender, EventArgs e)
{
//This is the old version that I used the NavigationManager That I have Created.
//var manageDataPacketsPage = new ManageDataPacketsPage();
//await NavigationManager.Instance.Navigation.PushAsync(manageDataPacketsPage, true);
//This is the method that I used the NuGet Package NavigatableElement.
await Navigation.PushAsync(new ManageDataPacketsPage());
}
这是我试图转换为NavigatableElement的一个:
public async Task OpenParcelPage(string plotId)
{
var page = new ParcelPage();
page.Fill(plotId);
//This does not see the NavigatableElement Package. So its returning the "Navigation" Object null.
await NavigationManager.Instance.Navigation.PushAsync(page);
}
这是我创建的NavigationManager:
public class NavigationManager
{
public INavigation Navigation { get; private set; }
#region Singleton
private static readonly object _lock = new object();
private static readonly object _updateLock = new object();
private static NavigationManager instance = null;
public static NavigationManager Instance
{
get
{
if (instance == null)
{
lock (_lock)
{
if (instance == null)
{
instance = new NavigationManager();
}
}
}
return instance;
}
}
我该如何解决这个问题?
2条答案
按热度按时间uidvcgyl1#
或者,利用
INaviagtion
的功能,您可以编写自己的视图服务来导航页面。下面是代码片段,供您在导航从第一页到第二页时参考:
1.创建视图服务:ViewServices.cs
1.分别创建两个接口:
1.在后面的第一页代码中,注意第二页也需要实现
ISecondPage
。首页.xaml:
1.FirstPageViewMode.cs
5.在App.xaml.cs中,修改起始页,如下所示:
1.MauiProgram.cs
vsdwdz232#
导航管理器返回null的原因是因为我没有在主页面中实现它。
我知道不是很多人都在制作自己的导航管理器。我应该做的是阅读并制作 Alexandria 在上面告诉我的东西。但是如果有人偶然发现这个问题,他们可以像这样解决它。