Windows 8导航,传递URI作为参数

时间:2012-03-28 12:15:23

标签: c# xaml windows-8 microsoft-metro windows-runtime

我刚开始为Windows 8开发,我在页面之间的导航中传递参数时遇到了一些困难。

我要做的是:我有两个页面(第1页和第2页)在第1页,有一个带按钮的菜单。当我单击此按钮时,click事件应该作为参数传递一个可能的URI或路径,它将在page2中设置图像的来源。

这是page1中的代码:

private void Button_Click_2(object sender, RoutedEventArgs e)
{
    //this.Frame.Navigate(typeof(SplitPage), "ms-appx:/Imgs/1.png");
    this.Frame.Navigate(typeof(SplitPage), new Uri("ms-appx:/Imgs/1.png", UriKind.RelativeOrAbsolute));
}

和page2,用于接收Uri:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var imgSource = e.Parameter as ImageSource;
    this.imgParaPintar.Source = imgSource;
}

我注意到imgSource没有收到任何内容,它保持为空。

那么,关于我做错了什么或者我错过了什么的任何线索?

2 个答案:

答案 0 :(得分:2)

我认为您需要这样的代码(未经测试):

protected override void OnNavigatedTo(NavigationEventArgs e)
{
     this.imgParaPintar.Source = new BitmapImage((Uri)e.Parameter);
}

如果您的文件中没有using Windows.UI.Xaml.Media.Imaging;,则可能需要将{{1}}添加到文件中。

答案 1 :(得分:0)

值得注意的是,正如这里的评论所述:

http://answers.flyppdevportal.com/categories/metro/csharpvb.aspx?ID=4b847d71-9cd5-4457-add9-f68e457b23ff

您只能将原始类型作为导航参数传递。