У меня есть реактивная команда readCommand
, которую я выполняю на основе сигнала.
IObservable<Unit> readSignal = ...
readSignal.InvokeCommand(readCommand);
Результат команды отображается в пользовательском элементе управления, скажем, TextBox
.
Я хотел бы поместить refresh button
рядом с TextBox
, который при нажатии вызывает readCommand
. Эта кнопка не должна быть видна во время выполнения команды, а затем сделана видимой через 5 секунд после выполнения команды.
Моя попытка отобразить / скрыть refresh button
следует. IsRefreshable
связан со свойством Visibility
refresh button
.
readCommand
.IsExecuting
.SelectMany(x => (x ? Observable.Timer(TimeSpan.FromMilliseconds(0)) : Observable.Timer(refreshTimeout)).Select(_ => !x))
.ToPropertyEx(this, vm => vm.IsRefreshable, false, false, RxApp.MainThreadScheduler);
Я думаю, что работает нормально, когда скорость выброса readSignal
ниже, чем скорость обновления (refreshTimeout
). Но явно не работает, если скорость readSignal
выше refreshTimeout
.