書き出されるXAMLコードはリスト1のようになります。
リスト1 書き出されたされたXAMLコード(MainPage.xaml)
- (1)要素のHorizontalScrollBarVisibilityプロパティにVisibleと指定しています。
- (2)要素のFlowDirectionプロパティにLeftToRightと指定しています。Widthに1920、Height=520と指定しています。
02 | x:Class="Win8_OldRecord.MainPage" |
05 | xmlns:local="using:Win8_OldRecord" |
08 | mc:Ignorable="d" Width="1920"> |
10 | <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> |
11 | <ScrollViewer Width="2500" HorizontalScrollBarVisibility="Visible" Margin="0,0,-580,0">■(1) |
12 | <GridView x:Name="GridView1" HorizontalAlignment="Left" VerticalAlignment="Center" FlowDirection="LeftToRight" Height="520" Width=”1920” />■(2) |
次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト3のコードを記述します。
ロジックコードを記述する
リスト3 (MainWindow.xaml.vb)
ファイル、フォルダ、およびアプリケーションの設定を管理するWindows.Storage名前空間をインポートします。
ページがアクティブになった時の処理
KnownFolders.PicturesLibraryでピクチャライブラリフォルダを取得後、CreateFolderAsyncメソッドで、そのフォルダの中にageRecordsというサブフォルダを作成します。
CreateFolderAsyncメソッドは、現在のフォルダ内に新しいサブフォルダを作成、現在のフォルダに同じ名前を持つフォルダが既に存在していた時のために、CreationCollisionOption.OpenIfExistsと指定します。
CreationCollisionOption.OpenIfExistsは、既に同名フォルダが存在する場合は、そのフォルダ名を返します。
ageRecordsというサブフォルダがない場合は、ageRecordsサブフォルダを作成してくれます。
CreationCollisionOption.OpenIfExistsを指定していないとエラーになりますので、注意してください。ここに指定する他の値については、下記のURLを参照してください。
→ CreationCollisionOption enumeration
GetFilesAsyncメソッドでageRecords内のファイルを取得し、IstorageFile型のIReadOnlyListであるmyPictureFilesに格納します。GetFilesAsyncメソッドは現在のフォルダのファイルを取得するメソッドです。
IReadOnlyList(Of Out T)はインデックスによってアクセス可能な読み取り専用のコレクションを表します。
ageRecordsフォルダ内のファイル一覧を格納しているmyPictureFilesコレクション内のファイルを、 IStorageFile型(ファイルを表します)の変数myFileで取得しながら以下の処理を行います。
新しいBitmapImageクラスのインスタンスbmpオブジェクトを作成します。SetSourceメソッドにmyFile.OpenReadAsyncと指定して、IStorageFile型の変数myFileの取得したファイルを開きます。
新しいImageクラスのインスタンスmyImageオブジェクトを作成します。
WidthとHeight、Stretchプロパティを指定します。Sourceプロパティには、開かれたファイルを参照しているbmpオブジェクトを指定します。GridViewにmyImageオブジェクトを指定します。これで、ピクチャライブラリフォルダ内のサブフォルダageRecords内の画像ファイルが一覧で表示されます。
非同期処理になりますので、メソッドの最初にAsyncを追加します。
01 | Protected Overrides Async Sub OnNavigatedTo(e As Navigation.NavigationEventArgs) |
02 | Dim pictureFolder As StorageFolder = KnownFolders.PicturesLibrary |
03 | Dim pictureSubFolder As StorageFolder = Await pictureFolder.CreateFolderAsync("ageRecords", CreationCollisionOption.OpenIfExists) |
04 | Dim myPictureFiles As IReadOnlyList(Of IStorageFile) = Await pictureSubFolder.GetFilesAsync() |
05 | For Each myFile As IStorageFile In myPictureFiles |
06 | Dim bmp As New BitmapImage |
07 | bmp.SetSource(Await myFile.OpenReadAsync) |
08 | Dim myImage As New Image |
11 | myImage.Stretch = Stretch.None |
13 | GridView1.Items.Add(myImage) |
画像を一覧表示するサンプルは以上です。今回は、もう1つのサンプルを紹介します。