【问题标题】:Call a navigation method from another page - XAML从另一个页面调用导航方法 - XAML
【发布时间】:2015-09-08 15:14:37
【问题描述】:

我正在制作一个 Windows 应用商店应用程序,我正在尝试创建一个带有一些按钮的标题,以帮助在页面之间导航...

我的问题是我创建了一个 MasterPage.xaml (用于每个页面,因此我不需要每次都复制和粘贴样式)并在里面创建一些按钮及其点击事件。

private void HomePage_Click(object sender, RoutedEventArgs e)
{
    this.Frame.Navigate(typeof(Pages.HomePage));  
}

当我尝试从另一个页面单击按钮时,会发生 NullReferenceException 并检查 this.Frame 的值,它说它是 null.

如何使用从另一个页面调用的导航方法?

我试过在网上搜索,但找不到类似的东西...

编辑

App.xaml.cs 中,我必须更改一些值才能制作 MasterPage...

我的代码:

var rootFrame = Window.Current.Content as MasterPage;
if (rootFrame == null)
{
   rootFrame = new MasterPage();
   if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
   {
      // TODO: Load state from previously suspended application
   }
   Window.Current.Content = rootFrame;
}

【问题讨论】:

    标签: c# wpf xaml navigation nullreferenceexception


    【解决方案1】:

    获取当前帧的最佳方法是:

    Frame rootFrame = Window.Current.Content as Frame;  
    

    您应该在 MasterPage 的构造函数中添加这行代码,其中“rootFrame”是您页面的一个属性。

    【讨论】:

    • 仍然无法正常工作... rootFrame 仍然是 null... 我做错了什么吗?我在课堂上添加了 private Frame rootFramerootFrame = Window.Current.Current as Frame 在构造函数中
    • Window.Current.Current?它是“内容”而不是“当前”到最后。在您的 App.xaml.cs 中,默认情况下应该有这一行(在“OnLaunched”事件中),如果框架为空,它应该初始化一个框架。检查它是否存在。
    • 是的,这是内容,我只是在写评论时失败了:D 为了制作 MasterPage,我必须更改 App.xaml.cs 更改根框架,我'我用我的代码编辑了
    • 好的,这是您的问题,您将页面设置为 Windows 的内容,因此您的应用中没有框架。我认为这对你的目的来说是错误的,你为什么不创建一个用户控件并在你的页面中使用它?
    • 我已经找到办法了,我会关闭问题
    【解决方案2】:

    问题已解决

    网上冲浪我已经建立了解决方案。

    查看如何使用 MasterPages 以及如何处理来自这些页面的点击的链接:

    http://loekvandenouweland.com/content/choosing-a-specific-master-page-for-each-windows-store-app-page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多