【发布时间】:2015-03-23 01:32:12
【问题描述】:
我正在寻找使用 MVVM 灯 5 上可用的 NavigationService 在 Windows Phone 8.1 WinRT 上处理后退按钮按下事件的适当方法。
到目前为止,我认为最好的方法是在 ViewModelLocator 内注册 NavigationService 的 GoBack 方法,同时按照 NavigationService in MVVM Light V5 中概述的方法创建它
这是一种有效的方法。但是,在返回之前我无法处理验证,所以我想知道是否有更合适的方式来处理此事件。
public class ViewModelLocator
{
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
// Register NavigationService
SimpleIoc.Default.Register(CreateNavigationService);
// Register ViewModels here
}
private INavigationService CreateNavigationService()
{
var navigationService = new NavigationService();
// Register pages here
navigationService.Configure("Details", typeof(DetailsPage));
// Handle back button
HardwareButtons.BackPressed += (sender, args) => {
navigationService.GoBack();
args.Handled = true;
};
return navigationService;
}
}
【问题讨论】:
-
您希望执行哪种验证?结果是否只是一个简单的布尔值,告诉 NavigationService 是否可以导航?
-
是的,我期待某种 CanNavigate 布尔返回方法,但逻辑可能取决于 ViewModel
-
mytoolkit.codeplex.com 具有框架、页面和导航的实现,其行为类似于 WP8 SL。有关该主题的更多信息:stackoverflow.com/questions/11539755/…
标签: c# mvvm windows-phone-8.1 winrt-xaml mvvm-light