MVVM 轻型页面导航在 ViewModel 外部
MVVM light Page Navigation Outside ViewModel
我正在尝试在 wiew 模型之外的 Windows 8.1 通用应用程序中调用 NavigateTo
。我已经试过了:
var dispatcher = Window.Current.Dispatcher;
await dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
async () => await NavigateToRegistrationPage()
);
结果抛出异常
Object reference not set to instance of object.
我还尝试使用 Messenger 通过 Messenger 消息调用导航表单 ViewModel:
Messenger.Default.Send<MessengerEvents.NavigateToRegistrationPage>(
new MessengerEvents.NavigateToRegistrationPage()
);
Public LoginViewModel //...
MessengerInstance.Register<MessengerEvents.NavigateToRegistrationPage>(
this,
(message) => GoToRegistrationPage()
);
也不行。
Error has been thrown by the target of invocation
我无法在视图模型中直接调用导航(在没有直接从视图模型调用 Messenger 的情况下进行检查工作完美) 因为导航是响应服务器消息而执行的。
private void GoToRegistrationPage()
{
NavigationService.NavigateTo(ResourceService.CHOOSE_REGISTRATION_PAGE);
}
问题已解决,我尝试从 MVVM Locator 中获取调度程序,将调度程序移至 app.xaml.cs 并完美运行
我正在尝试在 wiew 模型之外的 Windows 8.1 通用应用程序中调用 NavigateTo
。我已经试过了:
var dispatcher = Window.Current.Dispatcher;
await dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
async () => await NavigateToRegistrationPage()
);
结果抛出异常
Object reference not set to instance of object.
我还尝试使用 Messenger 通过 Messenger 消息调用导航表单 ViewModel:
Messenger.Default.Send<MessengerEvents.NavigateToRegistrationPage>(
new MessengerEvents.NavigateToRegistrationPage()
);
Public LoginViewModel //...
MessengerInstance.Register<MessengerEvents.NavigateToRegistrationPage>(
this,
(message) => GoToRegistrationPage()
);
也不行。
Error has been thrown by the target of invocation
我无法在视图模型中直接调用导航(在没有直接从视图模型调用 Messenger 的情况下进行检查工作完美) 因为导航是响应服务器消息而执行的。
private void GoToRegistrationPage()
{
NavigationService.NavigateTo(ResourceService.CHOOSE_REGISTRATION_PAGE);
}
问题已解决,我尝试从 MVVM Locator 中获取调度程序,将调度程序移至 app.xaml.cs 并完美运行