2017-02-17 2 views
1

Я создал реактивную команду от наблюдаемого холода. Когда вызывается команда, она меняет IsExecuting на true и на первое испущенное значение от наблюдаемого назад до false.ReactiveCommand IsExecuting изменяется на false после первого испускаемого значения

public class MyViewModel : ReactiveObject 
{ 
    public ReactiveCommand<Unit, long> FooCommand { get; } 

    private readonly ObservableAsPropertyHelper<long> _intervals; 

    public long Intervals => _intervals.Value; 

    public MyViewModel() 
    { 
     FooCommand = ReactiveCommand.CreateFromObservable(
      () => Observable.Interval(TimeSpan.FromMilliseconds(250)) 
      .TakeUntil(DateTimeOffset.Now.AddSeconds(2))); 
     _intervals = FooCommand.ToProperty(this, vm => vm.Intervals); 
    } 
} 

Не следует ли IsExecuting изменений обратно в ложный после наблюдаемых Завершает, а не на первый излучаемый предмет? Что мне здесь не хватает?

Обратите внимание, что я использую привязку в XAML, если это как-то влияет на поведение.

ответ

3

Исправить. IsExecuting должен измениться после завершения наблюдаемого. Это ошибка.

Источник: https://github.com/reactiveui/ReactiveUI/issues/1244

Должен быть фиксированным, а не в текущей версии (7.1.0).

+0

Hi Daniel! Я знаю, что интервал как таковой не будет завершен, но для краткости я опустил дополнительный код, например TakeUntil. – Rok

+0

Я улучшил вопрос, так как это вызвало некоторую путаницу. – Rok

+0

Извините, я неверно сформулировал ваш вопрос. Тогда я согласен с тобой. Я бы ожидал того же. Так что либо ошибка, либо кто-то может, надеюсь, объяснить, почему она только ждет первого. –

Смежные вопросы