Skip to content

Instantly share code, notes, and snippets.

@Bert-Proesmans
Created August 12, 2020 09:30
Show Gist options
  • Save Bert-Proesmans/8eff6f3d2f76742f6294b308db873816 to your computer and use it in GitHub Desktop.
Save Bert-Proesmans/8eff6f3d2f76742f6294b308db873816 to your computer and use it in GitHub Desktop.
DynamicDataToy extended examples
private readonly SalesOptions.Load.Handler _optionsService;
private readonly SourceCache<SalesOption, ArticleCode> _salesOptionsSource;
private readonly ReadOnlyObservableCollection<SalesOptionGroup> _groupedSalesOptions;
private readonly ReadOnlyObservableCollection<SalesOptionProxy> _salesOptionProxies;
private readonly IDisposable _cleanup;
public WindowViewModel(SalesOptions.Load.Handler optionsService)
{
_optionsService = optionsService;
_salesOptionsSource = new SourceCache<SalesOption, ArticleCode>(x => x.Code);
var optionsChangeSet = _salesOptionsSource.Connect().Publish();
var localTransformed = optionsChangeSet
.Transform(option => new SalesOptionProxy(option))
.Sort(SortExpressionComparer<SalesOptionProxy>.Descending(t => t.Name), SortOptimisations.None)
.AsObservableCache()
.Connect()
.Publish();
var proxyBind = localTransformed
.ObserveOnDispatcher()
.Bind(out _salesOptionProxies)
.Subscribe();
var proxyCount = localTransformed.Count();
var proxyGroup = localTransformed
.AutoRefresh(proxy => proxy.IsSelected)
.Filter(x => x.IsSelected == true)
.GroupOnProperty(x => x.Category)
.Transform(group => new SalesOptionGroup(group, proxyCount))
.ObserveOnDispatcher()
.Bind(out _groupedSalesOptions)
.DisposeMany()
.Subscribe();
_cleanup = new CompositeDisposable(optionsChangeSet.Connect(), localTransformed.Connect(), proxyGroup);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment