[英]Navigate to new navigation page from ViewModel with Xamarin XLabs
我正在嘗試從ViewModel導航到新的導航頁面
我的App.cs中有此代碼段,它創建了一個新的導航頁面並將ViewModel綁定到View
MainPage = new NavigationPage((Page)ViewFactory.CreatePage<MainViewModel, MainView>());
該摘錄摘自本文入門xamarin表單實驗室xaml mvvm ioc @“ 5.向ViewFactory注冊視圖”
但是,我們將如何在ViewModel中執行此操作,以及當我們僅將它們與ViewFactory.Register綁定在一起時,創建一個新頁面並將ViewModel和View綁定在一起是否有意義?
文章摘錄:
public class App : Application
{
public App()
{
RegisterViews();
MainPage = new NavigationPage((Page)ViewFactory.CreatePage<MainViewModel, MainView>());
}
private void RegisterViews()
{
ViewFactory.Register<MainView, MainViewModel>();
}
}
不確定我是否很好地回答了您的問題,但是,這就是我的工作:首先在您的AppDelegate(或主要活動)中注冊您的依賴注入模塊(此處為simpleContainer的IDependencyContainer):
var resolverContainer = new SimpleContainer();
UserService us = new UserService();
var app = new XFormsAppiOS();
resolverContainer.Register<IDevice>(t => AppleDevice.CurrentDevice)
.Register<IDisplay>(t => t.Resolve<IDevice>().Display)
.Register<IXFormsApp>(app)
.Register<IJsonSerializer, JsonSerializer>()
.Register<IDependencyContainer>(resolverContainer);
Resolver.SetResolver(resolverContainer.GetResolver());
然后在您的app.cs上,確保將導航服務注冊到主導航頁面
Page loginPage = new NavigationPage((LoginPage)ViewFactory.CreatePage<LoginViewModel, LoginPage>());
MainPage = loginPage;
Resolver.Resolve<IDependencyContainer>()
.Register<INavigationService>(t => new NavigationService(MainPage.Navigation)) //New Xlabs nav service
.Register<INavigation>(t => MainPage.Navigation); // old Xlabs nav service
並且在您的viewModel推到頁面中,您需要
await Resolver.Resolve<INavigation>().PushAsync((ParameterPage)ViewFactory.CreatePage<ParameterViewModel, ParameterPage>(), false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.