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
画像ライブラリを利用可能にする
今回のサンプルでは、画像ライブラリにある画像の表示のために、マニフェストファイルには「画像ライブラリ」機能を宣言します。