我的Android應用程序中有以下代碼,它基本上使用一個頁面(使用NavigationDrawer)並將片段交換到中央視圖中。這允許出現一個頁面,而不是許多網頁上的導航:如何在Windows UWP中實現自定義演示者(Xamarin,MvvmCross)
Setup.cs:
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
var customPresenter = new MvxFragmentsPresenter();
Mvx.RegisterSingleton<IMvxFragmentsPresenter>(customPresenter);
return customPresenter;
}
ShellPage.cs
public class ShellPage : MvxCachingFragmentCompatActivity<ShellPageViewModel>, IMvxFragmentHost
{
.
.
.
public bool Show(MvxViewModelRequest request, Bundle bundle)
{
if (request.ViewModelType == typeof(MenuContentViewModel))
{
ShowFragment(request.ViewModelType.Name, Resource.Id.navigation_frame, bundle);
return true;
}
else
{
ShowFragment(request.ViewModelType.Name, Resource.Id.content_frame, bundle, true);
return true;
}
}
public bool Close(IMvxViewModel viewModel)
{
CloseFragment(viewModel.GetType().Name, Resource.Id.content_frame);
return true;
}
.
.
.
}
我怎樣才能實現在Windows UWP相同的行爲應用程序嗎?或者說,是否存在任何實現CustomPresenter的Windows MvvmCross應用程序的例子?這至少可以讓我開始如何實施它。
謝謝!
UPDATE:
我終於開始弄清楚如何去這與客戶主持人:
public class CustomPresenter : IMvxWindowsViewPresenter
{
IMvxWindowsFrame _rootFrame;
public CustomPresenter(IMvxWindowsFrame rootFrame)
{
_rootFrame = rootFrame;
}
public void AddPresentationHintHandler<THint>(Func<THint, bool> action) where THint : MvxPresentationHint
{
throw new NotImplementedException();
}
public void ChangePresentation(MvxPresentationHint hint)
{
throw new NotImplementedException();
}
public void Show(MvxViewModelRequest request)
{
if (request.ViewModelType == typeof(ShellPageViewModel))
{
//_rootFrame?.Navigate(typeof(ShellPage), null); // throws an exception
((Frame)_rootFrame.UnderlyingControl).Content = new ShellPage();
}
}
}
當我嘗試做一個導航到ShellPage,它失敗。所以,當我將內容設置爲ShellPage時,它工作正常,但是當我這樣做時,ShellPage的ViewModel不會自動初始化。我猜ViewModels在MvvmCross中使用OnNavigatedTo進行初始化?
嘗試使用** ** ContentPresenter或者 –
使用** **幀我 –
需要知道如何與MvxWindowsStorePage在MvvmCross管理導航。 – Maximus