Boga
Boga

Reputation: 371

Windows 8 navigation, passing an URI as parameter

I just started developing for windows 8, and I'm having some difficult in passing parameters in navigation between pages.

What I am trying to do is: I have two pages (page1 and page2) In page1, there's a menu with a button. When I click in this button, the click event should pass as a parameter an possible URI or path, that will set the source of a image in page2.

this is the code in 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));
}

and page2, for receiving the Uri:

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

I'm noticing that imgSource is receiving nothing, it keeps as null.

So, any clues on what I'm doing wrong or what I am missing?

Upvotes: 0

Views: 3752

Answers (2)

jbkkd
jbkkd

Reputation: 1550

It's worth noting, as stated in the comments here:

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

That you can only pass primitive types as navigation parameters.

Upvotes: 0

svick
svick

Reputation: 245076

I think you need code like this (untested):

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

You might need to add using Windows.UI.Xaml.Media.Imaging; to your file, if you don't have it there already.

Upvotes: 2

Related Questions