Exemplo n.º 1
0
        internal TreeViewItemViewModel(TreeViewItemModel item)
        {
            Model = item;

            Title = item
                    .ObserveProperty(x => x.Title)
                    .ToReadOnlyReactivePropertySlim()
                    .AddTo(disposable);

            Tag = item
                  .ObserveProperty(x => x.Tag)
                  .ToReadOnlyReactivePropertySlim()
                  .AddTo(disposable);

            Children = item.Children
                       .ToReadOnlyReactiveCollection(x => new TreeViewItemViewModel(x))
                       .AddTo(disposable);

            new[]
            {
                Children.CollectionChangedAsObservable().OfType <object>(),
                Children.ObserveElementObservableProperty(x => x.Title).OfType <object>(),
                Children.ObserveElementObservableProperty(x => x.Tag).OfType <object>(),
                Children.ObserveElementProperty(x => x.Children).OfType <object>()
            }
            .Merge()
            .Subscribe(_ => OnPropertyChanged(new PropertyChangedEventArgs(nameof(Children))))
            .AddTo(disposable);
        }