现代 UI 如何从另一个页面转到另一个页面 link
Modern UI how to go to another page from another link
我目前正在使用 CodePlex 的现代 UI。它很棒且易于使用,但有一些 类 和我不熟悉的事件。示例:我有两个名为 "Patients" 和 "Configurations" 的 GroupLink。每个 GroupLinks 中都有几个页面。我尝试使用按钮单击事件从一个页面导航到另一个页面。有效。但是当我尝试从 GroupLink2 的 Page1 导航到 GroupLink1 的 Page1 时,它仍然有效,但问题是活动的 GroupLink 仍然在 GroupLink2 而不是 GroupLink1 中,就像下面的屏幕截图所示:
顺便说一句,我使用后面的代码从 Allergies(IrritantPage) 导航到 PatientsPage:
private void FilterControl_OnToPatientClick(object sender, RoutedEventArgs e)
{
NavigationCommands.GoToPage.Execute("/MainContents/PatientGridPage.xaml", this);
}
那我该如何解决呢?
这是我的主页Window、患者标签页和配置列表页
现代WINDOW(主要Window)
<mui:ModernWindow x:Class="DentalProto.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
Title="Dental" IsTitleVisible="True"
WindowStartupLocation="CenterScreen"
Width="1200"
Height="720"
ContentSource="/Pages/MainTabPage.xaml"
Closing="MainWindow_OnClosing"
>
<mui:ModernWindow.MenuLinkGroups>
<mui:LinkGroup DisplayName="User Name">
<mui:LinkGroup.Links>
<mui:Link DisplayName="Patients" Source="/Pages/MainTabPage.xaml" />
<mui:Link DisplayName="Configurations" Source="/Pages/ConfigurationsListNav.xaml" />
</mui:LinkGroup.Links>
</mui:LinkGroup>
<mui:LinkGroup DisplayName="settings" GroupKey="settings">
<mui:LinkGroup.Links>
<mui:Link DisplayName="software" Source="/Pages/SettingsPage.xaml" />
</mui:LinkGroup.Links>
</mui:LinkGroup>
</mui:ModernWindow.MenuLinkGroups>
<mui:ModernWindow.TitleLinks>
<mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" />
<mui:Link DisplayName="help" Source="https://www.facebook.com/" />
</mui:ModernWindow.TitleLinks>
</mui:ModernWindow>
MAINTAB 页面(患者页面)
<UserControl x:Class="DentalProto.Pages.MainTabPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="1280">
<Grid >
<!-- TODO: set @SelectedSource -->
<mui:ModernTab Layout="Tab">
<mui:ModernTab.Links>
<!-- TODO: set @Source -->
<mui:Link DisplayName="Patient" Source="/MainContents/PatientGridPage.xaml" />
<mui:Link DisplayName="Treatment Record" Source="/MainContents/TreatmentFillInPage.xaml"/>
</mui:ModernTab.Links>
</mui:ModernTab>
</Grid>
</UserControl>
CONFIGURATIONLISTNAV(配置页面)
<UserControl x:Class="DentalProto.Pages.ConfigurationsListNav"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Style="{StaticResource ContentRoot}">
<!-- TODO: set @SelectedSource -->
<mui:ModernTab Layout="List">
<mui:ModernTab.Links>
<!-- TODO: set @Source -->
<mui:Link DisplayName="Allergies" Source="/MainContents/IrritantGridPage.xaml"/>
<mui:Link DisplayName="Health Diseases" Source="/MainContents/HealthDiseaseGridPage.xaml"/>
<mui:Link DisplayName="Mouth Diseases" Source="/MainContents/MouthDiseaseGridPage.xaml"/>
<mui:Link DisplayName="Procedures" Source="/MainContents/ProcedureGridPage.xaml"/>
<mui:Link DisplayName="Dentists" Source="/MainContents/DentistGridPage.xaml"/>
</mui:ModernTab.Links>
</mui:ModernTab>
</Grid>
</UserControl>
您在 ModernTab 控件中将 "page" 导航与 "tab" 导航混合在一起。
如果您在 ModernTab 控件内调用 NavigationCommands.GoToPage.Execute
,您将更改当前的 "tab",而不是当前的 "page"。
要更改顶级页面,您可以使用:
IInputElement target = NavigationHelper.FindFrame("_top", this);
NavigationCommands.GoToPage.Execute("/Pages/BasicPage1.xaml", target);
如果新页面是另一个 ModernTab,并且您想 select 一个与默认选项卡不同的选项卡,那么您必须放置一些额外的代码。
例如,您可以将参数传递给新页面。
请查看此 SO 答案。
对于任何可能为此苦苦挣扎的人,请在您的 MainWindow.cs 构造函数中设置:
Application.Current.MainWindow = this;
然后在您的应用程序中您想导航到某个页面的部分,运行 这个:
IInputElement target = NavigationHelper.FindFrame("_top", Application.Current.MainWindow);
NavigationCommands.GoToPage.Execute("/NameOfYourPage.xaml", target);
我目前正在使用 CodePlex 的现代 UI。它很棒且易于使用,但有一些 类 和我不熟悉的事件。示例:我有两个名为 "Patients" 和 "Configurations" 的 GroupLink。每个 GroupLinks 中都有几个页面。我尝试使用按钮单击事件从一个页面导航到另一个页面。有效。但是当我尝试从 GroupLink2 的 Page1 导航到 GroupLink1 的 Page1 时,它仍然有效,但问题是活动的 GroupLink 仍然在 GroupLink2 而不是 GroupLink1 中,就像下面的屏幕截图所示:
顺便说一句,我使用后面的代码从 Allergies(IrritantPage) 导航到 PatientsPage:
private void FilterControl_OnToPatientClick(object sender, RoutedEventArgs e)
{
NavigationCommands.GoToPage.Execute("/MainContents/PatientGridPage.xaml", this);
}
那我该如何解决呢?
这是我的主页Window、患者标签页和配置列表页
现代WINDOW(主要Window)
<mui:ModernWindow x:Class="DentalProto.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
Title="Dental" IsTitleVisible="True"
WindowStartupLocation="CenterScreen"
Width="1200"
Height="720"
ContentSource="/Pages/MainTabPage.xaml"
Closing="MainWindow_OnClosing"
>
<mui:ModernWindow.MenuLinkGroups>
<mui:LinkGroup DisplayName="User Name">
<mui:LinkGroup.Links>
<mui:Link DisplayName="Patients" Source="/Pages/MainTabPage.xaml" />
<mui:Link DisplayName="Configurations" Source="/Pages/ConfigurationsListNav.xaml" />
</mui:LinkGroup.Links>
</mui:LinkGroup>
<mui:LinkGroup DisplayName="settings" GroupKey="settings">
<mui:LinkGroup.Links>
<mui:Link DisplayName="software" Source="/Pages/SettingsPage.xaml" />
</mui:LinkGroup.Links>
</mui:LinkGroup>
</mui:ModernWindow.MenuLinkGroups>
<mui:ModernWindow.TitleLinks>
<mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" />
<mui:Link DisplayName="help" Source="https://www.facebook.com/" />
</mui:ModernWindow.TitleLinks>
</mui:ModernWindow>
MAINTAB 页面(患者页面)
<UserControl x:Class="DentalProto.Pages.MainTabPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="1280">
<Grid >
<!-- TODO: set @SelectedSource -->
<mui:ModernTab Layout="Tab">
<mui:ModernTab.Links>
<!-- TODO: set @Source -->
<mui:Link DisplayName="Patient" Source="/MainContents/PatientGridPage.xaml" />
<mui:Link DisplayName="Treatment Record" Source="/MainContents/TreatmentFillInPage.xaml"/>
</mui:ModernTab.Links>
</mui:ModernTab>
</Grid>
</UserControl>
CONFIGURATIONLISTNAV(配置页面)
<UserControl x:Class="DentalProto.Pages.ConfigurationsListNav"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Style="{StaticResource ContentRoot}">
<!-- TODO: set @SelectedSource -->
<mui:ModernTab Layout="List">
<mui:ModernTab.Links>
<!-- TODO: set @Source -->
<mui:Link DisplayName="Allergies" Source="/MainContents/IrritantGridPage.xaml"/>
<mui:Link DisplayName="Health Diseases" Source="/MainContents/HealthDiseaseGridPage.xaml"/>
<mui:Link DisplayName="Mouth Diseases" Source="/MainContents/MouthDiseaseGridPage.xaml"/>
<mui:Link DisplayName="Procedures" Source="/MainContents/ProcedureGridPage.xaml"/>
<mui:Link DisplayName="Dentists" Source="/MainContents/DentistGridPage.xaml"/>
</mui:ModernTab.Links>
</mui:ModernTab>
</Grid>
</UserControl>
您在 ModernTab 控件中将 "page" 导航与 "tab" 导航混合在一起。
如果您在 ModernTab 控件内调用 NavigationCommands.GoToPage.Execute
,您将更改当前的 "tab",而不是当前的 "page"。
要更改顶级页面,您可以使用:
IInputElement target = NavigationHelper.FindFrame("_top", this);
NavigationCommands.GoToPage.Execute("/Pages/BasicPage1.xaml", target);
如果新页面是另一个 ModernTab,并且您想 select 一个与默认选项卡不同的选项卡,那么您必须放置一些额外的代码。 例如,您可以将参数传递给新页面。 请查看此 SO 答案。
对于任何可能为此苦苦挣扎的人,请在您的 MainWindow.cs 构造函数中设置:
Application.Current.MainWindow = this;
然后在您的应用程序中您想导航到某个页面的部分,运行 这个:
IInputElement target = NavigationHelper.FindFrame("_top", Application.Current.MainWindow);
NavigationCommands.GoToPage.Execute("/NameOfYourPage.xaml", target);