我认为在PageHeader中使用ShellBackButton(使用Template 10框架)是一件很酷的事情,但Back导航不会更新页面。页面框架更改,但页面显示为空白。
是因为ShellBackButton没有链接到导航系统,如果是这样,你如何让ShellBackButton(和ShellBackButtonUpdated)工作?
[根据评论更新信息]
在视图页面XAML(连接到视图模型页面)中:
<Page.DataContext>
<vm:DetailPageViewModel x:Name="ViewModel" />
</Page.DataContext>
在视图页面代码隐藏中:BackButton命中重写的Windows.UI.Xaml.Navigation事件
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// BackButton hits this event as well as OnNavigatingFrom(NavigatingCancelEventArgs e)
// and OnNavigatedFrom(NavigationEventArgs e)
}
在viewmodel页面中(继承Template10.Mvvm.ViewModelBase):
public class DetailPageViewModel : Template10.Mvvm.ViewModelBase
{
// Navigation now takes place via overridden methods in
// Template10.Services.NavigationService.INavigable
}
这为我的原创提出了一个更具体的子问题,更清晰:
如何使ShellBackButton(目前点击视图页面中 Windows.UI.Xaml.Navigation 导航事件 INSTEAD 点击 Template10.Services .NavigationService.INavigable 视图模型中的导航事件?如果可以这样做(我不知道怎么做),那么问题就解决了。
答案 0 :(得分:0)
好的,所以摆脱页面背后的代码,它没有位置。除了构造函数之外,几乎所有Pages
在代码隐藏中几乎都是空白的。
这并不意味着视图相关的东西不能放在这里,因为在ShellPage
的{{1}}中代码隐藏已经做了很多,但它专门用于此。< / p>
接下来将覆盖置于viewmodel中,问题应该解决。由于页面的Datacontext现在是您定义的视图模型,因此您对该服务感到困惑。或者至少它不知道覆盖存在,因为viewmodel实际上并没有为它设置。
Template10.MVVM.ViewModelBase已继承HamburgerMenu
,因此现在您总共至少有2次覆盖,1 INavigable
和OnNavigateToAsync
,请记住,在版本中异步风味可能会消失。
我假设你从图库中安装了Template10 vsix,它应该还安装了ViewModels的模板以及代码片段。
HTH,
摩根。