.NET TIPS

[Silverlight 2]アプリケーションが配置されているURLを取得するには?[C#、VB]

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

 同じSilverlight 2アプリケーションを異なる複数のページで使用するような場合、そのアプリケーションが配置されているページのURLを取得すれば、それをキーにして内部処理を分岐させたり、データを保存したりできる。

 Silverlight 2アプリケーションが配置されているページのURLは、次のようにして取得できる(コードの記述例は後述)。

System.Windows.Browser.HtmlPage.Document.DocumentUri.AbsoluteUri
ページのURL

 これは、HtmlPageクラス(System.Windows.Browser名前空間)のDocument静的プロパティから、ブラウザ内のドキュメントを示すHtmlDocuementオブジェクト(同名前空間)を取得し、さらにそのDocumentUriプロパティにアクセスしている。DocumentUriプロパティは、従来からのUri型(System名前空間)である。

 ちなみに、XAPファイルのURLは以下のコードにより取得できる。

System.Windows.Application.Current.Host.Source.AbsoluteUri
XAPファイルのURL

 こちらは、Applicationクラス(System.Windows名前空間)のCurrent静的プロパティを使用している。

DocumentUriプロパティを使用したサンプル・アプリケーション

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

Microsoft Silverlight を取得
Silverlight 2のサンプル・アプリケーション

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

<UserControl x:Class="DocumentUriSample.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="50" Content="ページのURLは?"
             Click="Button_Click1"/>

    <TextBox Margin="10" Height="50" x:Name="textBox1"/>

    <Button  Margin="10" Height="50" Content="XAPファイルのURLは?"
               Click="Button_Click2"/>

    <TextBox Margin="10" Height="50" x:Name="textBox2"/>

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

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

using System.Windows.Browser;

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

    private void Button_Click1(object sender, RoutedEventArgs e)
    {
      // ページのURL
      this.textBox1.Text =
          HtmlPage.Document.DocumentUri.AbsoluteUri;
    }

    private void Button_Click2(object sender, RoutedEventArgs e)
    {
      // XAPファイルのURL
      this.textBox2.Text =
          Application.Current.Host.Source.AbsoluteUri;
    }
  }
}
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)
    ' ページのURL
    Me.textBox1.Text = _
        HtmlPage.Document.DocumentUri.AbsoluteUri
  End Sub

  Private Sub Button_Click2(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    ' XAPファイルのURL
    Me.textBox2.Text = _
       Application.Current.Host.Source.AbsoluteUri
  End Sub
End Class
上:Page.xaml.cs、下:Page.xaml.vb

 ここではUriクラスのAbsoluteUriプロパティにより絶対URLを取得しているが、Uriクラスには、ホスト名部分(Host)やパス部分(AbsolutePath)を取り出すプロパティも用意されている。End of Article

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

この記事と関連性の高い別の.NET TIPS
[Silverlight 2]アプリケーションのホスト情報を取得するには?
相対URLを絶対URLに変換するには?
[Silverlight 2]JavaScriptコードからSilverlightのオブジェクトを利用するには?
[Silverlight 2]コードによりページを遷移するには?
[Silverlight 2]Silverlightコントロールの実際のサイズを取得するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム 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 記事ランキング

本日 月間