如何在具有小屏幕的设备上深入链接到MasterDetailsView中的项目?

时间:2018-03-18 22:09:38

标签: c# xaml uwp uwp-xaml windows-community-toolkit

我在页面上有一个MasterDetailsView,我从另一个页面导航到该页面。我传入一个参数,该参数对应于MasterDetailsView所绑定的列表中的项目ItemSource,如下所示:

protected override void OnNavigatedTo(NavigationEventArgs e) {
 if (e.Parameter != null) {
  Thing selectedThing = e.Parameter as Thing;
  Selected = selectedThing;
  MasterDetailsViewControl.SelectedItem = selectedThing;
 }
}

这适用于大屏幕的外形规格 - DetailsView成功填充相关内容。但是,在较小的屏幕上,隐藏DetailsView以支持ListView全屏显示。这通常是有利的,但在这里我希望DetailsView打开,因为个人Thing刚刚与之挂钩。

看到ViewState的{​​{1}}属性是只读的,是否有某种方法可以在这些较小的屏幕上强制MasterDetailsView打开而不是DetailsView?如果没有,应该如何促进深层链接功能呢?

1 个答案:

答案 0 :(得分:1)

通过我的测试,当尚未加载MasterDetailsView控件时,如果设置了SelectedItem属性,则不会触发OnSelectedItemChanged处理程序。这就是DetailsView无法打开的原因。

要解决您的问题,您可以在MasterDetailsViewControl的Loaded事件处理程序中设置SelectedItem

private Thing Selected;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter != null)
    {
        Thing selectedThing = e.Parameter as Thing;
        Selected = selectedThing;
    }
}
private void MasterDetailsViewControl_Loaded(object sender, RoutedEventArgs e)
{
    MasterDetailsViewControl.SelectedItem = Selected;
}