Navigate to an instance of a custom class, instead of a Page.

image_pdfimage_print


   
  

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="WpfApplication1.HomePage"
  xmlns:local="clr-namespace:WpfApplication1"
  WindowTitle="Page that Navigates to an Object">
  <Page.Resources>
    <DataTemplate DataType="{x:Type local:Person}">
      <TextBlock xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <TextBlock FontWeight="Bold">Name:</TextBlock>
        <TextBlock Text="{Binding Path=Name}" />
        <LineBreak />
        <TextBlock FontWeight="Bold">Favorite Color:</TextBlock>
        <TextBlock Text="{Binding Path=FavoriteColor}" FontWeight="Bold">
          <TextBlock.Background>
            <SolidColorBrush Color="{Binding Path=FavoriteColor}" />
          </TextBlock.Background>
        </TextBlock>
      </TextBlock>
    </DataTemplate>
  </Page.Resources>
  <Hyperlink Name="hyperlink" Click="hyperlink_Click">Navigate to Nancy Davolio</Hyperlink>

</Page>
//File:Window.xaml.cs
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class HomePage : Page
    {
        public HomePage()
        {
            InitializeComponent();
        }

        void hyperlink_Click(object sender, RoutedEventArgs e)
        {
            Person person = new Person("A", Colors.Yellow);
            this.NavigationService.Navigate(person);
        }
    }
    public class Person
    {
        string name;
        Color favoriteColor;

        public Person() { }
        public Person(string name, Color favoriteColor)
        {
            this.name = name;
            this.favoriteColor = favoriteColor;
        }

        public string Name
        {
            get { return this.name; }
            set { this.name = value; }
        }

        public Color FavoriteColor
        {
            get { return this.favoriteColor; }
            set { this.favoriteColor = value; }
        }
    }
}