[英]Mvvm back button: Page and ViewModel lose command binding
我已经使用MVVM Light实现了以下模式: 在WinRT中使用MVVM Light调用ViewModel方法以响应页面导航事件
我将其结合使用: 如何使用MVVM灯处理WP 8.1上的后退按钮?
private static INavigationService CreateNavigationService()
{
var navigationService = new NavigationService();
navigationService.Configure("Details", typeof(DetailsPage));
navigationService.Configure("Chart", typeof(ChartPage));
// Handle back button
HardwareButtons.BackPressed += (sender, args) => {
navigationService.GoBack();
args.Handled = true;
};
return navigationService;
}
导航到“详细信息”页面和/或“图表”页面,也可以使用“后退”按钮。 但是之后,我将无法再次导航到页面之一。
看起来MainPage及其ViewModel没有重新加载(缓存?)。 因此他们失去了束缚。 没有设置RelayCommand
,因此无法再导航。
谁能帮我这个?
编辑:找到了解决方法:)
最好的问候,里克
将ViewModel中的代码更改为:
public MainViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
DetailsCommand = new RelayCommand(() =>
{
navigationService.NavigateTo("Details", "My data");
});
}
至:
public MainViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
DetailsCommand = new RelayCommand(() =>
{
_navigationService.NavigateTo("Details", "My data");
});
}
导航现在可以来回运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.