WebBrowserコントロールで任意のサイトを表示する+1つのサンプル
次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト4のコードを記述します。
ロジックコードを記述する
リスト4 (MainWindow.xaml.vb)
Option Strict On Public NotInheritable Class MainPage Inherits Page
XML要素を表すXElementクラス型のメンバ変数xmldocを宣言します。
Dim xmldoc As XElement Dim Index As Integer
ページがアクティブになった時の処理
XElement.LoadメソッドでXML文書((url.xml))を読み込みます。
新しいStackPanelのインスタンスmyStackPanelオブジェクトを作成します。OrientationプロパティにHorizontalを指定して、スタック方向を水平方向に設定します。
Descendantsメソッドで、子孫要素コレクションの要素を変数resultに格納しながら、反復処理を行います。
Buttonの新しいインスタンスmyButtonオブジェクトを作成します。
WidthとHeightを指定し、Marginプロパティに10を指定して余白を設けます。
Contentプロパティに要素の値を指定します。
Tagプロパティに1ずつ加算されるメンバ変数Indexの値を指定します。この値は、どのボタンがクリックされたかの判別に使用します。
myStackPanelオブジェクトにmyButtonを追加します。
CustomAppBarのContentプロパティにmyStackPanelオブジェクトを追加します。
これで、WebBrowserコントロールのAddress欄の下方でマウスの右クリックをすると、サイト名の表示されたButtonが水平方向に並んで表示されます。
AddHandlerステートメントで、ボタンがクリックされた時のClickイベントに、イベントハンドラを追加します。イベントハンドラ内では以下の処理を行います。
ボタンの情報を持っているclickSenderからTagプロパティの値を取得し、myIndexに格納します。WebBrowserのNavigateメソッドに、数値に変換した、myIndexに位置する要素の属性”url”の値を指定します。
これで、”url”属性に記述されているサイトに遷移します。
Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs) xmldoc = XElement.Load("url.xml") Dim myStackPanel As New StackPanel myStackPanel.Orientation = Orientation.Horizontal For Each result In From c In xmldoc.Descendants("サイト名") Select c Dim myButton As New Button With myButton .Width = 150 .Height = 50 .Margin = New Thickness(10) .Content = result.Value .Tag = Index.ToString End With Index += 1 myStackPanel.Children.Add(myButton) AddHandlermyButton.Click, Sub(clickSender As Object, clickArgs As RoutedEventArgs) Dim myIndex = DirectCast(clickSender, Button).Tag WebBrowser1.Navigate(New Uri(xmldoc.Descendants("サイト名")(CInt(myIndex)).Attribute("url").Value)) End Sub Next AppBar1.Content = myStackPanel End Sub End Class
今回はここまでです。ありがとうございました。
WebBrowserコントロールで任意のサイトを表示するWindows8サンプルアプリ
WebBrowserコントロールとCustomAppBarを組み合わせて使うWindows8サンプルアプリ