从与其不同的页面访问SplitView控件';s主机-C#XAML Windows 10 UWP

从与其不同的页面访问SplitView控件';s主机-C#XAML Windows 10 UWP,c#,windows,xaml,splitview,uwp,C#,Windows,Xaml,Splitview,Uwp,预告,我对C#和XAML还不熟悉,但我真的很喜欢Windows10UWP应用程序。我有一个关于如何正确处理SplitView的问题 我有一个主页,其中有一个SplitView控件。在SplitView内容中,我添加了一个用于导航到其他页面的框架。我想在子页面上添加Hamburger按钮以打开主页上的SplitView,但无法从子页面访问SplitView控件。如何使SplitView控件可访问,以便子页面中的汉堡按钮可以打开SplitView窗格 另一种选择是在主页中添加一个标题,并在那里有一个

预告,我对C#和XAML还不熟悉,但我真的很喜欢Windows10UWP应用程序。我有一个关于如何正确处理SplitView的问题

我有一个主页,其中有一个SplitView控件。在SplitView内容中,我添加了一个用于导航到其他页面的框架。我想在子页面上添加Hamburger按钮以打开主页上的SplitView,但无法从子页面访问SplitView控件。如何使SplitView控件可访问,以便子页面中的汉堡按钮可以打开SplitView窗格

另一种选择是在主页中添加一个标题,并在那里有一个静态汉堡按钮,但我不喜欢这个选项,因为它使处理文本标题内容更加困难。另一种方法是将SplitView复制到每个页面。我也不想这样做


任何建议都太棒了!谢谢。

我强烈建议您选择在主页上添加汉堡按钮。用户总是希望它每次都在同一个位置,而改变这种方法可能会导致糟糕的用户体验

您也不希望重复代码,因此不希望在每个页面上重新创建按钮以及任何其他功能,如打开/关闭命令

与其将元素从一个页面引用到另一个页面,更好的做法是保持松散耦合。这可以通过一个messenger插件来完成,它可以将一个事件从一个页面发送到另一个页面,该页面可以为它提供关于您想要做什么的指示。这样,另一个页面只需侦听事件,而无需保存强引用。为了简化某些流程,您可以从实现messenger功能的基类继承

这将为您的按钮和标题文本情况提供解决方案,但设置它们超出了本问题的范围。根据应用程序的大小和目标,您可能希望查看有助于设计可维护应用程序的现有框架。我建议签出的一个好的Mvvm框架也是跨平台的,它包含


祝你的应用程序好运。

如上所述,出于几个原因,最好将你的汉堡按钮保留在主页上。一是上述的一致性。其次,您必须在每个内容页中重新创建汉堡包按钮,而不是在MainPage.xaml中只创建一次。此外,请记住,在SplitView菜单的弹出方式和显示方式方面,与SplitView菜单有不同类型的交互,所有这些都列在下面

内联–打开菜单窗格时,它会将内容推到上方。关闭后,内容将返回其原始位置

覆盖–打开菜单窗格时,它位于内容的顶部。当它关闭时,它是不可见的

紧凑覆盖–打开菜单窗格时,它位于内容的顶部。关闭后,窗格在压缩模式下仍然可见

压缩内联–当菜单窗格打开时,它会将内容推到上方。关闭后,内容将返回到其原始位置,但窗格在压缩模式下仍然可见

您还可以在这里看到SplitView的快速介绍。
我找到了解决方案:

在主页的SplitView窗格按钮方法中,将SplitView引用作为参数添加到Navigate()中:

在ChildPage.xaml.cs中:

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
         SplitView sv = new SplitView();
         sv = e.Parameter as NavigateControls;
    }
现在可以在子帧代码中执行sv.IsPaneOpen=false

注意:如果要传递多个控件,请使用这些控件作为变量创建一个类,并使用实例作为参数

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
         SplitView sv = new SplitView();
         sv = e.Parameter as NavigateControls;
    }