【问题标题】:How to navigate from App.xaml.cs to other pages?如何从 App.xaml.cs 导航到其他页面?
【发布时间】:2019-04-15 16:12:18
【问题描述】:

所以我的应用程序中有不同的页面。由于我想要一个跨越所有这些页面的菜单栏,我在我的 App.xaml 中进行了以下操作。

我通常会使用 NavigationService 在不同页面之间导航。 但是如何从我的 App.xaml.cs 导航到不同的页面。

<Application.Resources>
        <Menu x:Key="Menu">
            <DockPanel  VerticalAlignment="Top">
                <Menu DockPanel.Dock="Top" FontSize="14">
                    <MenuItem Header="_File">
                        <Separator />
                        <MenuItem Header="_Exit" />
                    </MenuItem>
                    <MenuItem Header="_Statussen" Click="MenuItem_OnClick"/>
                    <MenuItem Header="_TipsTricks" />
                </Menu>
            </DockPanel>
        </Menu>
    </Application.Resources>

我在 menuitem 上获得了 StatussenPage.xaml 等页面,单击它应该显示该页面等。

在我的 App.xaml.cs 中添加了以下代码:

        Page testpage = new TipsTricksPage();

        private void MenuItem_OnClick(object sender, RoutedEventArgs e)
        {
            testpage.NavigationService.Navigate(new TipsTricksPage());
        }

并得到以下错误: System.NullReferenceException

【问题讨论】:

  • 请说明您的具体问题添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • @Hille 更新了问题希望现在更清楚了吗?
  • 你得到什么错误?为什么这不符合您的需求?你的主窗口有框架吗?
  • @Hille 用我尝试的方法和我得到的错误更新了它。
  • 您无法在一个页面上导航到另一个页面。你需要一些东西来像框架一样显示页面 (myFrame.NavigationService.Navigate(new TipsTricksPage());)

标签: c# wpf


【解决方案1】:

在最佳实践中,您应该使用 MainWindow 启动您的应用程序

在 App.xaml 中

<Application x:Class="projectname.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Banc_Suspension_SAHD"
             StartupURI="MainWindow.xaml.cs" // Right here !
             Exit="App_Exit">

然后,在您的 MainWindow 中(在应用启动时直接打开)您可以创建一个菜单 并在 MainWindow.cs 中处理点击事件。

在 MainWindow.Xaml.cs 中

<Window x:Class="projectname.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    <Grid>
            <Menu>
                <MenuItem Header="Re-Impression PV">
                    <MenuItem Click = "MyActionClick"></MenuItem>
                    <MenuItem></MenuItem>
                </MenuItem>
            <Menu/>
      </Grid>
</Window>

在 MainWindow.cs 中

        private void MyActionClick(object sender, RoutedEventArgs e)
        {
            //Your code
        }

【讨论】:

  • 是的,我以前就是这样做的。但是如何让菜单显示在我的不同页面上,并且页面具有相同的 Click 事件?
  • 你有你的窗口和一个框架和一个菜单&lt;window ...&gt;&lt;menu ... /&gt;&lt;frame ... /&gt;&lt;/window&gt;所以菜单不受任何页面更改的影响
  • @ErosGuil 可能会将框架添加到网格中以明确页面应加载到的位置
猜你喜欢
  • 1970-01-01
  • 2020-07-29
  • 2012-01-26
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
相关资源
最近更新 更多