ClientModel

This is an open source package designed to define MVVM client application based on XAML (WinUI, UWP, WPF, or Xamarin)
Nuget | Github

Scopes are IObservable<object> The way of notify partial results is using: Yield(object)

var scope = await vm.BeginScope(sc => 
            {
                foreach (var item in myList)
                    sc.Yield(item);
            })
            .Observe(x => x.Subscribe(myObserver))
            .StartAsync();

Use Observe(Action<IObservable<object>>) to react to scope yield-results, or even to apply Reactive extensions queries:

var scope = await vm.BeginScope(sc =>
            {
                foreach (var item in myContactList)
                    sc.Yield(item);
            })
            .Observe(c => c.Where(c => c.Age >= 18)
                           .DistinctUntilChanged()
                           .Subscribe(Console.WriteLine))
            .StartAsync();

Observable reaction can also be enabled on collection property changes

An error has occurred. This application may no longer respond until reloaded. Reload 🗙