希望你们都好。我遇到了一个WPF XAML问题,我的页面无法导航,经过一段时间的研究,我似乎仍然无法解决这个问题。基本上,我有我的主窗口页面,其中有一个按钮事件,使用框架将页面内容更改为新页面的内容(“OrdersPage.xaml”)
我写的MainWindow XAML是这样的:
<Controls:MetroWindow x:Class="DatabaseTest.MainWindow"
xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
WindowTitleBrush="Gray" GlowBrush="Black"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
<Grid Background="#312F2F">
<Frame x:Name="mainFrame"/>
...
我的订单页面看起来像这样:
<Controls:MetroWindow x:Class="DatabaseTest.OrdersPage"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DatabaseTest"
mc:Ignorable="d"
Title="OrdersPage" Height="450" Width="800">
<Grid>
<TextBlock Text="Hello"></TextBlock>
</Grid>
...
在这个类后面的C#中,有一个方法处理按钮按下,看起来像这样:
public partial class MainWindow
{
public static NavigationService NavigationService => ((MainWindow)Application.Current.MainWindow).mainFrame.NavigationService;
...
private void SendCustomerBtn_Click(object sender, RoutedEventArgs e)
{
if(parseCustomer is not null)
{
MainWindow.NavigationService.Navigate("OrdersPage.xaml");
}
}
从我写的和阅读过的其他文章,我相信这是写正确的,但是当我运行我的程序,点击按钮,它显示在左上角,“OrdersPage.xaml”作为一个小的黑色文本。(图片在这里):
Image of navigation
我真的很困惑为什么会发生这种情况,并希望得到任何帮助。
1条答案
按热度按时间lh80um4z1#
我注意到
MainWindow
和OrdersPage
都实现了MetroWindow
,现在尝试将OrdersPage
更改为标准的Page
。然后,尝试在代码隐藏中示例化一个新的
OrdersPage
对象,如下所示:这使您能够提供构造函数参数(WPF需要一个无参数的构造函数,但您可以用任何您想要的东西重载它),并且仍然为您提供使用
NavigationService
的所有好处,例如GoBack()
等。