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サンプルアプリ


