ViewModelの定義(MainViewModel)
PictureModelとMainPage.xamlを結合するためのViewModelは、次のようになります。
Public Class MainViewModel
Implements INotifyPropertyChanged
Private WithEvents Model As New PictureModel ' …①
Public Property ImageElement As ImageSource
Get
Return Me.Model.ImageElement
End Get
Set(value As ImageSource)
Me.Model.ImageElement = value
End Set
End Property
Public Property RasterElement As Leadtools.RasterImage ' …②
Get
Return Me.Model.RasterElement
End Get
Set(value As Leadtools.RasterImage)
Me.Model.RasterElement = value
End Set
End Property
Public Async Sub Open()
Await Me.Model.Open
End Sub
Private _OpenCommand As Common.RelayCommand
Public Property OpenCommand As Common.RelayCommand ' …③
Get
If Me._OpenCommand Is Nothing Then
Me._OpenCommand = New Common.RelayCommand(AddressOf Open)
End If
Return Me._OpenCommand
End Get
Set(value As Common.RelayCommand)
Me._OpenCommand = value
End Set
End Property
Public Event PropertyChanged(sender As Object,
e As PropertyChangedEventArgs) _
Implements INotifyPropertyChanged.PropertyChanged
Private Sub OnPropertyChanged(<CallerMemberName> Optional propertyName As String = Nothing)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
Private Sub Model_PropertyChanged(sender As Object,
e As PropertyChangedEventArgs) _
Handles Model.PropertyChanged
OnPropertyChanged(e.PropertyName)
End Sub
End Class
- ①PicureModelクラスをイベント検出付きで宣言
- ②ラスターイメージを伝搬するためのパブリックプロパティを定義
- ③ファイル読み込むのメソッドを呼び出すためのコマンドプロパティを定義
また、MainViewModelをページ間での共通ViewModelとするために、App.xaml.vbの先頭に次のようなコードを記述しておきます。
NotInheritable Class App
Inherits Application
Public Shared ReadOnly Property MainVM As MainViewModel
Get
If _MainVM Is Nothing Then
_MainVM = New MainViewModel
End If
Return _MainVM
End Get
End Property
Private Shared _MainVM As MainViewModel = Nothing
:
(略)
:
XAMLのコードビハインド定義
MainPage.xamlのコードビハインド側であるMainPage.xaml.vbには自動生成されたコードがあるので、コンストラクタである「Public Sub New()」の最後に次の1行を追加します。
Me.DataContext = App.MainVM
画像ライブラリを利用可能にする
今回のサンプルでは、画像ライブラリにある画像の表示のために、マニフェストファイルには「画像ライブラリ」機能を宣言します。

