【Silverlight】 クエリ文字列を設定して、画面遷移を行うには

◆ メイン画面(XAML)

<UserControl
  x:Class="SilverlightApplication7.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:navigation="clr-namespace:System.Windows.Controls;
    assembly=System.Windows.Controls.Navigation" 
  xmlns:uriMapper="clr-namespace:System.Windows.Navigation;
    assembly=System.Windows.Controls.Navigation"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">

  <Grid x:Name="LayoutRoot">
    <StackPanel>
      <Button Width="100" HorizontalAlignment="Left"
        Content="遷移" Name="btnNavigate"></Button>
      <navigation:Frame x:Name="ContentFrame" Source="/Home">
        <navigation:Frame.UriMapper>
          <uriMapper:UriMapper>
            <uriMapper:UriMapping Uri="/{pageName}"
              MappedUri="/Views/{pageName}.xaml"/>
          </uriMapper:UriMapper>
        </navigation:Frame.UriMapper>
      </navigation:Frame>
    </StackPanel>
  </Grid>

◆ メイン画面(C# Code)

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;

namespace SilverlightApplication7
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            this.btnNavigate.Click += (s, e) =>
            {
                // About画面へ遷移(クエリ文字列「id」に "test" を設定)
                this.ContentFrame.Navigate(
                  new Uri("/About?id=test", UriKind.Relative));
            };

            this.ContentFrame.NavigationFailed += (s, e) =>
            {
                MessageBox.Show("画面遷移エラー");
            };            
        }        
    }
}

◆ About画面(C# Code)

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;

namespace SilverlightApplication7
{
    public partial class About : Page
    {
        public About()
        {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // クエリ文字列「id」の取得
            MessageBox.Show(this.NavigationContext.QueryString["id"]);
        }
    }
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中