【问题标题】:Windows Phone 8.1 - Page NavigationWindows Phone 8.1 - 页面导航
【发布时间】:2014-04-18 12:39:47
【问题描述】:

来自Windows Phone 8 我从没想过Windows Phone 8.1 代码会有很多变化。基本上我只是想知道如何像在Windows Phone 8 上那样进行页面导航。为此,您应该添加:

NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));

但该代码不适用于Windows Phone 8.1

有人可以帮我解决这个问题吗?如果可能,请提供有关所有新 Windows Phone 8.1 方法的任何链接或文档。

【问题讨论】:

  • 您是否遇到任何错误?
  • 此代码在我的诺基亚 630 上对我有用,带有青色
  • 请参考 [this][1] 答案,也许它可以帮助你... [1]:stackoverflow.com/a/28761419/2295643
  • NavigationService 给了我错误。

标签: c# windows-phone-8 windows-phone-8.1


【解决方案1】:

在 Windows Phone 8.1 中,Page Navigation 方法是这样的:

Frame.Navigate(typeof(SecondPage), param);

这意味着您将导航到“SecondPage”,并传递“param”(基于对象的类)。

如果你不需要传递任何参数,你可以使用这个:

Frame.Navigate(typeof(SecondPage));

您可以找到文档for this MSDN link

【讨论】:

  • 如果我想返回,点击硬件返回按钮不起作用,我是否必须添加硬件返回按钮按下事件,然后进入我想要的页面?还是他们更简单的方法?
  • 您可以在您的SecondPage 中使用NavigationHelper,这样您就不需要添加事件处理程序。例如,您可以创建一个BasicPage 而不是BlankPage 作为您的SecondPage。你会看到的。
  • wp8.1 与 wp8.0 不同,但与 winrt 更相似。
  • 如何传递多个参数。
  • @Devi Prasad 您应该定义一个包含多个参数的类。
【解决方案2】:

如果你想回去,你可以使用:

if(this.Frame.CanGoBack)
{
this.Frame.GoBack();
}

如果你想在点击返回按钮时返回,你需要重写hardwarebutton事件:

HardwareButtons.BackPressed += HardwareButtons_BackPressed;

void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
        {
            Frame rootFrame = Window.Current.Content as Frame;
            if(rootFrame != null && rootFrame.CanGoBack)
            {
                rootFrame.GoBack();
                e.Handled = true;
            }

        }

确保将 e.Handled 设置为 true。

【讨论】:

【解决方案3】:
// Navigation Without parameters

this.Frame.Navigate(typeof(SecondPage));



// Navigation with parameters

this.Frame.Navigate(typeof(SecondPage),MyParameters);

【讨论】:

  • 如何传递多个参数
  • 使用数组或 List ,将参数放入其中,并在参数中传递数组或 List 。你要样品吗?
【解决方案4】:

发送多个参数: 回答很晚,但可能会帮助某人。您可以创建一个自定义类,在其中设置参数并将其对象作为参数发送到您的目标页面。

例如。您的自定义类:

public class CustomDataClass
{
public string name;
public string email;
} 

CustomDataClass myData = new CustomDataClass();
myData.name = "abc";
myData.email = "abc@hotmail.com";

Frame.Navigate(typeof(SecondPage), myData);

然后在目标页面上,您可以像这样在 OnNavigatedTo 函数中检索:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
CustomDataClass myData2 = e.Parameter as CustomDataClass;
string name = myData2.name;
string email = myData2.email;
}

希望对你有帮助。

【讨论】:

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