次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト3のコードを記述します。
ロジックコードを記述する
リスト3 (MainWindow.xaml.vb)
UIを提供するクラスの含まれる、Windows.UI名前空間を読み込みます。文字の色を指定する場合等に必要です。
Imports Windows.UI
ImageInfoクラス内で文字列型の「画像名」、「説明」プロパティを定義しています。
5 | Public NotInheritable Class MainPage |
XML要素を表す、XElementクラス型のメンバ変数xmldocを宣言します。
ページがアクティブになった時の処理
XElement.LoadメソッドでXML文書ファイル(photo_etc.xml)を読み込みます。
ImageInfoクラス型の新しいリストであるmyImageInfoオブジェクトを作成します。
Descendantsメソッドで全ての要素のコレクションに対して、要素を変数resultに格納しながら、反復処理を行います。
ImageInfoクラスの「画像名」プロパティに、画像を配置している”ms-appx:///Images/”フォルダを連結した要素の内容テキストを指定します。「説明」プロパティには要素の内容テキストを指定します。
各プロパティの設定されたImageInfoクラスをAddメソッドで、myImageInfoオブジェクトに追加していきます。
ListBoxのItemsSourceプロパティにmyImageInfoオブジェクトを指定します。これで、ListBox内に画像の一覧が表示されます。
01 | Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs) |
02 | xmldoc = XElement.Load("photo_etc.xml") |
03 | Dim myImageInfo As New List(Of ImageInfo) |
05 | For Each result In From c In xmldoc.Descendants("情報") Select c |
07 | .Add(New ImageInfo With {.画像名 = "ms-appx:///Images/" &result.Element("画像名").Value, .説明 = result.Element("説明").Value}) |
10 | ListBox1.ItemsSource = myImageInfo |
リストボックスから任意の画像が選択された時の処理
ListBoxから選択された画像の「画像名」プロパティを取得して、変数myImageに格納します。同じく「説明」プロパティを取得して変数myExplainに格納しておきます。
Imageの新しいインスタンスである、_myImageオブジェクトを作成します。
WidthとHeightプロパティの値を指定し、Sourceプロパティに変数myImageで初期化されたUriを指定します。
TextBlockの新しいインスタンスmyTextBlockオブジェクトを作成します。
WidthとHeightプロパティを設定し、文字の回り込みを設定するTextWrappingプロパティにWrapを指定します。文字色(Foreground)にはGoldを指定します。
Textプロパティには、変数myExplainの値を指定します。
文字の水平方向の配置を示すTextAlignmentプロパティにはLeftを指定し、左詰めとします。
StackPanelの新しいインスタンスmyStackPanelオブジェクトを作成します。
AddメソッドでmyStackPanelオブジェクトに、_myImageとmyTextBlockオブジェクトを追加します。
画像の下に文字(説明文)が表示されます。
AnimationContainer1の回転する内容を表すRotaingContentにmyStackPaneオブジェクトを指定します。
持続時間を指定するDurationに4秒と指定します。
画像の最大拡大率を指定するPulseScaleに10.0と指定します。
Y軸の回転の半径をRadiusYに50.0、X軸の回転の半径を表すRadiusXに100を指定しています。
AnimationContainerの各プロパティの説明に対しての情報が、現時点ではどこにも掲載されていませんので、各自が各プロパティの値を変更して、どのような動作になるかを確認して、お試しください。
01 | Private Sub ListBox1_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles ListBox1.SelectionChanged |
02 | Dim myImage = DirectCast(ListBox1.SelectedItem, ImageInfo).画像名 |
03 | Dim myExplain = DirectCast(ListBox1.SelectedItem, ImageInfo).説明 |
04 | Dim _myImage As New Image |
09 | .Source = New BitmapImage(New Uri(myImage, UriKind.Absolute)) |
12 | Dim myTextBlock As New TextBlock |
16 | .TextWrapping = TextWrapping.Wrap |
17 | .Foreground = New SolidColorBrush(Colors.Gold) |
19 | .TextAlignment = TextAlignment.Left |
22 | Dim myStackPanel As New StackPanel |
24 | .Children.Add(_myImage) |
25 | .Children.Add(myTextBlock) |
28 | With AnimationContainer1 |
29 | .RotatingContent = myStackPanel |
1つ目のサンプルは以上で終わりです。次ページでは2つ目のサンプルを紹介します。