我有一个加载到框架中的页面。在后面的代码中,我有一个名为mode的字符串变量。我想要做的是当点击超链接,打开页面并设置模式
我希望以声明的方式做到这一点。我试着做了
NavigatUri="myPage?mode=edit"
然后在初始化组件调用
之后将以下内容添加到后面的代码中mode = this.NavigationContext.QueryString["mode"];
但是我找不到页面错误。我有一种感觉,我在另一个星球上。我是银光的新手。如何以这种方式导航到页面并传递该参数?
答案 0 :(得分:1)
查看主页中的UriMapper
。最终的UriMapping
通常是所有看起来像这样的东西: -
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
您将在Uri的开头注意“/”,相应的页面属于“/ Views”文件夹。
使用属性: -
NavigatUri="/myPage?mode=edit"
确保您的页面位于Views文件夹中。
但是我很确定你已经有了。您真正的问题是您尝试在执行页面构造函数时访问NavigationContext
。它在页面生命周期中的那个时候不可用。在OnNavigatedTo
执行之前,您不应尝试使用它。
public partial class MyPage : Page
{
public MyPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string mode = null;
if (NavigationContext.QueryString.ContainsKey("mode"))
{
mode = NavigationContext.QueryString["mode"];
}
// Do stuff with mode.
}
}
您看到“找不到页面错误”的原因是因为导航应用程序ErrorWindow
只是假设任何加载页面失败的原因是因为找不到它。假设您已正确编码页面,这可能是一个合理的假设。