🐷

ReactiveProperty v7.12.0 をリリースしました

2021/08/07に公開

ReactiveProperty v7.12.0 をリリースしました。

https://www.nuget.org/packages/ReactiveProperty/7.12.0

前に Zenn でリリースの記事を書いたのが v7.10.0 なので v7.11.0 の更新内容も含めてここで紹介したいと思います。

v7.11.0 で追加された機能

EventToReactiveCommandCommandCanExecute とバインドされているコントロールの IsEnabled プロパティの同期をとるようにしました。

@ryuix さんが以下のプルリクで追加してくれました。ありがとうございました。

https://github.com/runceel/ReactiveProperty/pull/262

この機能はデフォルトで有効になるため過去と同じように同期しないようにしたい場合は EventToReactiveCommandAutoEnable プロパティに false を指定してください。

v7.12.0 で追加された機能

2 つの変更点があります。

IReactiveProperty インターフェースに ForceNotify メソッドを追加しました

ReactiveProperty<T>ReactivePropertySlim<T> も強制的に値を発行するための ForceNotify メソッドを持っていますが IReactiveProperty インターフェースには定義されていませんでした。
今回のバージョンアップで IReactiveProperty インターフェースに ForceNotify メソッドが追加されました。

EventToReactiveCommand がコマンドの Execute を呼び出す際に強制的に UI スレッドにディスパッチしていた問題を修正しました

タイトルの通りのことが行われていたため、必ず 1 テンポ遅れて ICommandExecute メソッドが呼び出されていました。
例えば Closing イベントに紐づけていた場合には Closing イベントが終わった後に Execute メソッドが呼ばれていました。

そのため以下のように挙動を変えました。

ReactivePropertyScheduler.Default にディスパッチを行うように変更しました。
WPF の場合は ReactivePropertyWpfScheduler を使うように AppStartup イベントで設定しておくと UI スレッド上の場合には即座に呼び出されて、そうでない場合は UI スレッド上で呼び出されるようにディスパッチされます。

スレッドのディスパッチを行わずに直接現在のスレッド上で Execute メソッドが呼ばれるようにしたい場合は CallExecuteOnScheduler プロパティを false に指定してください。

Microsoft (有志)

Discussion