ReactUIを使用してXamarinフォームを使用してボタンをダブルクリックしないように苦労しています。ReactiveUIを使用してダブルクリックを防止する
NextCommand = ReactiveCommand.CreateFromTask(async() => await HostScreen.Router.NavigateAndReset.Execute(new NewViewModel()));
通常のXamarinフォームの方法でボタンにバインドされています。残念ながら、非常に高速なクリックは2つのコマンド呼び出しを引き起こします。
ReactiveUIを使用して修正することはできますか?
私が試したものを要約する質問を更新:残念ながら
var obs = Observable.FromAsync(async() => await HostScreen.Router.NavigateAndReset.Execute(new CitizensIndexViewModel()))
.Throttle(TimeSpan.FromSeconds(2));
LoginCommand = ReactiveCommand.CreateFromObservable(() => obs);
、それは助けにはなりませんでした。非常に高速にボタンをダブルクリックすると、コマンドが2回実行されます。
私はlockステートメントやセマフォを 'execute'メソッドに追加しようとしましたが、実行が並行して行われないために動作しませんでした。これは、CanExecuteメソッドを使用する理由もありません。
潜在的には醜いブールフラグです。このソリューションの唯一の問題は、明らかに実行可能なバックナビゲーションでリセットする必要があることですが、これを最善の解決策とはみなしません。
これは正しいとは言えません。実装をhttps://github.com/reactiveui/ReactiveUI/blob/f23538577ea7e567ab372c550adebebe9fdbb7f7/src/ReactiveUI/ReactiveCommand.cs#L566 で確認してください。この質問に答えるには十分な情報がありません。いつものやり方は何ですか?実装はどのように見えますか?レプロを提供してください。 –
@GeoffreyHuntley質問を更新しました。私が意味することがより明確になることを願っています。私はReactiveUIにかなり新しいので、私の無知を私に許してください:)。私は学びたいだけ – mierzynskim