それはさておき、Rxが便利な分野といえば、イベントと非同期ですね。非同期はTaskとasync/awaitに譲った感もありますが、イベント合成はRxの独壇場です。Rxでイベント合成のサンプルで間違いなく出てくるのが、マウスのDragですね。MouseDown→MouseMove→MouseUpの流れをうまく表現できるのが素晴らしい。&lt;/Canvas&gt;&lt;/Window&gt;XAMLは、何のひねりもないので問題ないと思います。}}C#側もそんなに問題ないですね。詳しくは、@ITの@neueccさんの記事とか@xin9leさんのブログとかを参照してください。手抜きなので、イベントを拾ってプロパティーを変更して、自分自身とBindingしてるという微妙なコードになっていますが、ここではそこは大きな問題ではないです。これで、Mouseによる範囲選択ができた。思ったのですが、現実はそんなに甘くありませんでした。MouseでDrag処理を行った場合、MouseUp時に何かしら確定処理を行うことがほとんどだと思います。#矩形に含まれるオブジェクトを選択するとか、動的オブジェクトを永続オブジェクトに変更するとか...しかし、この終了処理を記述する良い場所がないのです。思いつくのが、SubscribeのCompleteだと思うのですが、これはMouseUpイベントが発生し、一連のMouseイベント購読が終わっても、呼び出されることがありません。(Hotだから?次に、ReleaseMouseCapture()を呼び出している、Doメソッドの内部ですが、ここではObservableなStreamを流れてくるPointCollectionに対してアクセスすることができません。解決策は、Rxの外部に変数を宣言して、変数のキャプチャを行うことになると思うのですが、これはこれでいまいちですよね。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。あの長文blogをめちゃめちゃわかりやすくまとめていただきました。非常にとっつきやすいので、他の方にWaaSを説明する際にはぜひご活用ください。agoモニタ買うなら4Kやろ。無料サイトやブログを作成.%d人のブロガーが「いいね」をつけました。