如果过早调用 ShowViewModel 将不起作用
ShowViewModel does not work if called too early
在 MvvmCross
4.1.4 for Window Universal App
(UWP) 平台中,如果我们在 ViewModel
中调用 ShowViewModel
过早(如 Constructor
, Init
,或 Start
事件)然后它不会导航到另一个模型。
public class FirstViewModel : MvxViewModel
{
public FirstViewModel()
{
ShowViewModel<SecondViewModel>();
}
}
请注意,它适用于 iOS
和 Android
平台。
这是 MvvmCross
的一个错误(根据这个 https://github.com/MvvmCross/MvvmCross/issues/1223)。
解决方案是从视图中的某些事件(例如 View_Loaded
或 View_GotFocus
触发导航:
public sealed partial class FirstView : MvxWindowsPage
{
public FirstView()
{
this.InitializeComponent();
this.Loaded += FirstView_Loaded;
}
private void FirstView_Loaded(object sender, RoutedEventArgs e)
{
var viewModel = base.ViewModel as FirstViewModel
if (viewModel != null)
{
viewModel.Initialise();
}
}
}
ViewModel
更新:
public class FirstViewModel : MvxViewModel
{
public FirstViewModel()
{
}
public void Initialise()
{
//Navigate here
ShowViewModel<SecondViewModel>();
}
}
在 MvvmCross
4.1.4 for Window Universal App
(UWP) 平台中,如果我们在 ViewModel
中调用 ShowViewModel
过早(如 Constructor
, Init
,或 Start
事件)然后它不会导航到另一个模型。
public class FirstViewModel : MvxViewModel
{
public FirstViewModel()
{
ShowViewModel<SecondViewModel>();
}
}
请注意,它适用于 iOS
和 Android
平台。
这是 MvvmCross
的一个错误(根据这个 https://github.com/MvvmCross/MvvmCross/issues/1223)。
解决方案是从视图中的某些事件(例如 View_Loaded
或 View_GotFocus
触发导航:
public sealed partial class FirstView : MvxWindowsPage
{
public FirstView()
{
this.InitializeComponent();
this.Loaded += FirstView_Loaded;
}
private void FirstView_Loaded(object sender, RoutedEventArgs e)
{
var viewModel = base.ViewModel as FirstViewModel
if (viewModel != null)
{
viewModel.Initialise();
}
}
}
ViewModel
更新:
public class FirstViewModel : MvxViewModel
{
public FirstViewModel()
{
}
public void Initialise()
{
//Navigate here
ShowViewModel<SecondViewModel>();
}
}