У меня есть приложение Xaml.Forms, использующее FreshMVVM. Я открываю определенную страницу из app.xaml.cs следующим образом:
Xamarin.Forms.Device.BeginInvokeOnMainThread(async () =>
{
var navService = FreshIOC.Container.Resolve<IFreshNavigationService>(FreshMvvm.Constants.DefaultNavigationServiceName);
Page page = FreshPageModelResolver.ResolvePageModel<SomePageModel>();
await navService.PushPage(page, null);
...
});
Но мне нужно добавить проверку, чтобы предотвратить это, если эта страница уже открыта. Как сделать такую проверку?
Добавьте статическое логическое значение в класс App, чтобы проверить, была ли открыта страница:
public partial class App : Application
{
public static bool isPageOpened;
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
public void test()
{
if (App.isPageOpened = false)
{
Xamarin.Forms.Device.BeginInvokeOnMainThread(async () =>
{
var navService = FreshIOC.Container.Resolve<IFreshNavigationService>(FreshMvvm.Constants.DefaultNavigationServiceName);
Page page = FreshPageModelResolver.ResolvePageModel<SomePageModel>();
App.isPageOpened = true;
await navService.PushPage(page, null);
});
}
}
}
И в методе OnDisappearing страницы установите для isPageOpened
значение false:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
App.isPageOpened = false;
}
}
Нет, я не думаю, что есть такой способ. Вы можете попробовать проверить navigation.childern[0].
@DavidShochet Мое решение работает для вас? Если да, не могли бы вы принять его (нажмите ☑️ в верхнем левом углу этого ответа), чтобы мы могли помочь большему количеству людей с такой же проблемой :).
Спасибо за ваш ответ. Я думаю, что могу использовать это. Но могу я сначала спросить, нет ли способа просто узнать, какая страница открыта в данный момент?