什么是ShellBackButton,带有ShellBackButtonUpdated事件,用于模板10?

时间:2017-01-18 13:53:17

标签: uwp template10

我认为在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 视图模型中的导航事件?如果可以这样做(我不知道怎么做),那么问题就解决了。

1 个答案:

答案 0 :(得分:0)

好的,所以摆脱页面背后的代码,它没有位置。除了构造函数之外,几乎所有Pages在代码隐藏中几乎都是空白的。

这并不意味着视图相关的东西不能放在这里,因为在ShellPage的{​​{1}}中代码隐藏已经做了很多,但它专门用于此。< / p>

接下来将覆盖置于viewmodel中,问题应该解决。由于页面的Datacontext现在是您定义的视图模型,因此您对该服务感到困惑。或者至少它不知道覆盖存在,因为viewmodel实际上并没有为它设置。

Template10.MVVM.ViewModelBase已继承HamburgerMenu,因此现在您总共至少有2次覆盖,1 INavigableOnNavigateToAsync,请记住,在版本中异步风味可能会消失。

我假设你从图库中安装了Template10 vsix,它应该还安装了ViewModels的模板以及代码片段。

HTH,

摩根。