.NET TIPS

[Silverlight 2]コードによりページを遷移するには?[C#、VB]

デジタルアドバンテージ 遠藤 孝信
2009/05/07

 Silverlight 2アプリケーションで別のWebページに遷移(移動)するには、HyperlinkButtonコントロールを配置してハイパーリンクを表示し、それをユーザーにクリックしてもらうのが一般的であるが、ここではページ遷移をC#やVBのコードから行う方法について説明する。

Navigateメソッドによるページ遷移

 コードによりページを遷移するには、Webブラウザのwindowオブジェクトを示すHtmlWindowクラス(System.Windows.Browser名前空間)のオブジェクトを取得し、そのNavigateメソッドを使用する。HtmlWindowオブジェクトは、HtmlPageクラス(System.Windows.Browser名前空間)のWindow静的プロパティから取得できる。

 Navigateメソッドの呼び出し例は次のようになる(実際のコード記述例は後述)。

HtmlPage.Window.Navigate(linkUri, "_self")
Navigateメソッドの呼び出し例

 Navigateメソッドの第1引数には遷移先のUriクラス(System名前空間)のオブジェクトを指定し、第2引数では遷移先のページを開くウィンドウ(あるいはフレーム)を指定する。

 第2引数の内容は、HTMLで<A>タグを記述する際のtarget属性の値と同じで、「_self」を指定すれば現在のウィンドウ内でページ遷移を行う。新しいウィンドウを開いてページを表示するには「_blank」を指定すればよい。指定可能な値については、MSDNの「open Methodの項目」などに記されている。

Navigateメソッドを使用したサンプル・アプリケーション

 次のSilverlightコントロールは、Navigateメソッドを使用したSilverlight 2のサンプル・アプリケーションである。実際にボタンをクリックして試すことができる。

Microsoft Silverlight を取得
Silverlight 2のサンプル・アプリケーション
実際にボタンをクリックして試すことができる。

 このアプリケーションのVisual Studio 2008プロジェクト(プロジェクト名は「NavigateSample」)内の、Page.xamlとPage.xaml.cs/Page.xaml.vbの内容を以下に示す。

<UserControl x:Class="NavigateSample.Page"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Width="400" Height="300">

  <Grid x:Name="LayoutRoot" Background="LightYellow">
    <StackPanel>

      <Button  Margin="10" Height="130" Click="Button_Click1"
               Content="../index/index.htmlへ移動"/>

      <Button  Margin="10" Height="130" Click="Button_Click2"
               Content="Googleを別ウィンドウで開く"/>

    </StackPanel>
  </Grid>
</UserControl>
Page.xaml

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

using System.Windows.Browser;

namespace NavigateSample
{
  public partial class Page : UserControl
  {
    public Page()
    {
      InitializeComponent();
    }

    private void Button_Click1(object sender, RoutedEventArgs e)
    {
      // ../index/index.htmlへ移動
      Uri linkUri =
              new Uri("../index/index.html", UriKind.Relative);
      HtmlPage.Window.Navigate(linkUri, "_self");
    }

    private void Button_Click2(object sender, RoutedEventArgs e)
    {
      // Googleを別ウィンドウで開く
      Uri linkUri = new Uri("http://google.co.jp/");
      HtmlPage.Window.Navigate(linkUri, "_blank");
    }
  }
}
Imports System.Windows.Browser

Partial Public Class Page
  Inherits UserControl

  Public Sub New()
    InitializeComponent()
  End Sub

  Private Sub Button_Click1(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    ' ../index/index.htmlへ移動
    Dim linkUri As New Uri("../index/index.html", UriKind.Relative)
    HtmlPage.Window.Navigate(linkUri, "_self")
  End Sub

  Private Sub Button_Click2(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    ' Googleを別ウィンドウで開く
    Dim linkUri As New Uri("http://google.co.jp/")
    HtmlPage.Window.Navigate(linkUri, "_blank")
  End Sub
End Class
上:Page.xaml.cs、下:Page.xaml.vb

 このサンプル・アプリケーションでは、相対URLへの遷移と、絶対URLへの遷移の2つを示している。End of Article

カテゴリ:Silverlight 2 処理対象:ブラウザ
使用ライブラリ:HtmlWindowクラス(System.Windows.Browser名前空間)
使用ライブラリ:HtmlPageクラス(System.Windows.Browser名前空間)
使用ライブラリ:Uriクラス(System名前空間)

この記事と関連性の高い別の.NET TIPS
[Silverlight 2]コードにより別ウィンドウを開くには?
Xamarin.Forms:画面遷移するには?
[Silverlight 2]アプリケーションが配置されているURLを取得するには?
[Silverlight 2]HTMLページ内のJavaScriptコードを実行するには?
[Silverlight 2]文字列として作成したJavaScriptコードを実行するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間