次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト1のコードを記述します。
ロジックコードを記述する
リスト1 (MainWindow.xaml.vb)
ユーザーがファイルを参照し、ファイルを開き、ファイルを保存する時、名前や拡張子、場所、を選択可能にするUI要素を管理するクラスの含まれる、Windows.Storage.Pickers名前空間をインポートします。
1 | Imports Windows.Storage.Pickers |
ファイル、フォルダー、およびアプリケーションの設定を管理するクラスの含まれる、Windows.Storage名前空間をインポートします。
3 | Public NotInheritable Class MainPage |
[選択]ボタンがクリックされた時の処理
FileOpenPickerクラスの新しいインスタンスmyFileOpenPickerオブジェクトを作成します。FileOpenPickerクラスは、ユーザーが選択し、ファイルを開くことのできるUI要素を表すクラスです。
ファイルの表示モードを指定するViewModeプロパティにサムネイル表示を指定します。サムネイル表示のほかにリスト(List)表示があります。ファイルを開く最初の場所を設定する、SuggestedStartLocationプロパティにPicturesLibrayを指定しておきます。開くファイルタイプを指定するFileTypeFilter.Addで「アスタリスク」を指定してすべてのファイルを指定しておきます。PNGファイルだけを指定する場合は、FileTyleFilter.Add(“.png”)と指定します。”*.png”ではないので注意してください。
PickSingleFileAsynメソッドで、ユーザーが1つのファイルを選択できるようにファイルピッカーを表示し、変数myFileで参照します。変数myFileがファイルを参照している場合は、新しいBitmapImageクラスのインスタンスmyBmpオブジェクトを作成します。SetSourceメソッドにAwait myFile.OpenReadAsyncと指定して、ファイルの内容を読み込むために、現在のファイルを、ランダムアクセスストリームで開きます。
ImageのSourceプロパティにmyBmpオブジェクトを指定します。これで、ファイルピッカーで指定したファイルが表示されます。
非同期処理で行われるため、メソッドの先頭にAsyncを追加します。
01 | Private Async Sub PickButton_Click(sender As Object, e As RoutedEventArgs) Handles PickButton.Click |
02 | Dim myFileOpenPicker As New FileOpenPicker |
03 | myFileOpenPicker.ViewMode = PickerViewMode.Thumbnail |
04 | myFileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary |
05 | myFileOpenPicker.FileTypeFilter.Add("*") |
06 | Dim myFile As StorageFile = Await myFileOpenPicker.PickSingleFileAsync() |
07 | If myFile Is Nothing = False Then |
08 | Dim myBmp As New BitmapImage |
09 | myBmp.SetSource(Await myFile.OpenReadAsync) |
10 | MainImage.Source = myBmp |