C# 现代UI如何从另一个链接转到另一个页面

C# 现代UI如何从另一个链接转到另一个页面,c#,wpf,modern-ui,C#,Wpf,Modern Ui,我目前正在使用CodePlex的现代UI。它非常好用,但有些课程和活动我并不熟悉。示例:我有两个名为“患者”和“配置”的组链接。每个组链接中都有几个页面。我尝试使用按钮单击事件从一个页面导航到另一个页面。成功了。但是,当我尝试从GroupLink2的第1页导航到GroupLink1的第1页时,它仍然有效,但问题是活动的GroupLink保留在GroupLink2中,而不是GroupLink1中,正如下面的屏幕截图所示: 顺便说一句,我使用代码从过敏(刺激性页面)导航到患者页面: privat

我目前正在使用CodePlex的现代UI。它非常好用,但有些课程和活动我并不熟悉。示例:我有两个名为“患者”和“配置”的组链接。每个组链接中都有几个页面。我尝试使用按钮单击事件从一个页面导航到另一个页面。成功了。但是,当我尝试从GroupLink2的第1页导航到GroupLink1的第1页时,它仍然有效,但问题是活动的GroupLink保留在GroupLink2中,而不是GroupLink1中,正如下面的屏幕截图所示:

顺便说一句,我使用代码从过敏(刺激性页面)导航到患者页面:

private void FilterControl_OnToPatientClick(object sender, RoutedEventArgs e)
    {            
        NavigationCommands.GoToPage.Execute("/MainContents/PatientGridPage.xaml", this);
    }
那么我该如何解决这个问题呢

这是我的主窗口、患者选项卡页面和配置列表页面

现代窗口(主窗口)


主选项卡页面(患者页面)


配置列表导航(配置页面)


您在ModernTab控件中混合了“页面”导航和“选项卡”导航

如果在ModernTab控件内调用
NavigationCommands.GoToPage.Execute
,则更改的是当前的“选项卡”,而不是当前的“页面”

要更改顶层页面,您可以使用:

IInputElement target = NavigationHelper.FindFrame("_top", this);
NavigationCommands.GoToPage.Execute("/Pages/BasicPage1.xaml", target);
如果新页面是另一个ModernTab,并且您希望选择与默认选项卡不同的选项卡,那么您必须添加一些额外的代码。 在示例中,您可以将参数传递到新页面。
请回答此问题。

对于可能遇到此问题的任何人,请在MainWindow.cs构造函数中设置此选项:

        Application.Current.MainWindow = this;
然后在应用程序中要导航到页面的部分,运行以下命令:

        IInputElement target = NavigationHelper.FindFrame("_top", Application.Current.MainWindow);
        NavigationCommands.GoToPage.Execute("/NameOfYourPage.xaml", target);

成功了!!我不完全理解它,我也不知道它的意思是什么,但它是有效的,这就是它的全部。我做了一些类似的事情,但是
目标
总是空的,不管
\u top
\u self
\u parent
,等等。有什么想法吗?@Mark Richman确保你不是用IContent方法(关于片段导航等)来做的-那里是空的always@erem是的。但是,如果我从内容页执行
NavigationCommands.GoToPage.Execute(“Foo.xml”),而不寻找框架,那么它确实可以工作。
IInputElement target = NavigationHelper.FindFrame("_top", this);
NavigationCommands.GoToPage.Execute("/Pages/BasicPage1.xaml", target);
        Application.Current.MainWindow = this;
        IInputElement target = NavigationHelper.FindFrame("_top", Application.Current.MainWindow);
        NavigationCommands.GoToPage.Execute("/NameOfYourPage.xaml", target);