У нас есть страница списка, где мы можем включить или отключить вещь ™, используя <switch />
Эта вещь ™ переключается с флагом IsActive
public class Thing
{
/* ... */
[Reactive] public bool IsActive { get; set; }
}
С учетом следующего прослушивателя изменений идея заключается в том, что при изменении свойства IsActive
(взаимодействие пользователя с тумблером) мы вызываем _saveItemCommand
, чтобы сохранить объект с новым IsActiveState
.
public ObservableCollection<Thing> DataObjectList {get;} = new ObservableCollection<Thing>();
public MyClass()
{
_saveItemCommand = ReactiveCommand.CreateFromTask(SaveItemInternal);
_listWatcher = DataObjectList
.ToObservableChangeSet()
.AsObservableList()
.Connect()
.WhenPropertyChanged(x => x.IsActive)
.Throttle(TimeSpan.FromMilliseconds(250))
.ObserveOn(RxApp.MainThreadScheduler)
.Select(x => x.Sender)
.InvokeCommand(_saveItemCommand);
}
public void OnNavigatingTo()
{
var newItems = _myService.GetNewItems();
DataObjectList.AddRange(newItems);
}
public void OnDestroy()
{
_listWatcher?.Dispose();
}
Проблема, с которой я столкнулся, заключается в том, что при настройке списка команда, кажется, вызывается для последнего элемента в списке сразу после вызова AddRange
.
Как я могу сделать это так что команда не вызывается, пока пользователь не переключит коммутатор в первый раз? Как правильно настроить этот слушатель?