MakViewModelBase Ver. 5.4.0 及び MakViewModelBaseCore Ver. 1.1.0 をリリースしました

MakViewModelBase Ver. 5.4.0 及び MakViewModelBaseCore Ver. 1.1.0 を NuGet に公開しました。

ソースプログラムは GitHub で MakViewModelBase, MakViewModelBaseCore それぞれ公開しています。

変更点は次のとおりです。

  • WeakEventViewModelBase の実装を見直し、System.Windows.IWeakEventListener インターフェイスを実装するようにした。

以前の実装では、PropertyChangedWeakEventListener クラスからビューモデルへの強い参照があり、不要になったビューモデルがスムーズに破棄されないという問題がありました(この実装を書いた際に違和感があったのですが、追求していませんでした)。この変更により WeakEventViewModelBase が IWeakEventListener インターフェイスを持つことでイベント ソース(イベントを発生させるオブジェクト)とイベント リスナー(イベントが発生した際に特定の処理を行うオブジェクト(この場合はビューモデル))の関係がすっきりとし、強い参照の発生を避けることができます。

ただ、以前の WeakEventViewModelBase の機能を利用していた場合には、破壊的変更となっています。

  • WeakEventViewModelBase.AddListener(INotifyPropertyChanged notifyObject, IWeakEventListener weakEventListener) メソッドは無くなりました。
  • WeakEventViewModelBase.RemoveListener(INotifyPropertyChanged notifyObject, IWeakEventListener weakEventListener)メソッドは無くなりました。
  • INotifyWeakPropertyChanged インターフェイスは無くなりました。
  • IPropertyChangedWeakEventListener インターフェイスは無くなりました。
  • PropertyChangedWeakEventListener クラスは無くなりました。

WeakEventViewModelBase クラスの利用例については、GitHub にあるソースコードの WeakEventViewModelBaseTestApp プロジェクトをご覧ください(サービス層のオブジェクトがイベント ソースとなり、 MainWindow と 1つのモーダルウィンドウを持つアプリケーションの例になっています(TransitionViewModelBase は使わずに MainWindowViewModel から ShowDialog させています))。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です