.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のサンプル・アプリケーションである。実際にボタンをクリックして試すことができる。
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)を取り出すプロパティも用意されている。
カテゴリ: Silverlight 2 処理対象: ブラウザ
使用ライブラリ: HtmlPageクラス(System.Windows.Browser名前空間)
使用ライブラリ: HtmlDocuementクラス(System.Windows.Browser名前空間)
使用ライブラリ: Applicationクラス(System.Windows名前空間)
使用ライブラリ: Uriクラス(System名前空間)
generated by
Insider.NET 記事ランキング
本日
月間