Base class of tree items in the VisualTreeViewModel.
Base class for DependencyObjectViewModel and StubTreeItemViewModel.
Inheritance: TreeItemViewModel
Beispiel #1
0
        public DependencyObjectViewModel(
            VisualTreeViewModel treeViewModel,
            VisualTreeItemViewModel parent,
            object model)
            : base(treeViewModel, parent)
        {
            this.Model = model;

            if (!Equals(this.Model.GetType().GetTypeInfo().Assembly,
                        typeof(FrameworkElement).GetTypeInfo().Assembly))
            {
                this.FontWeight = FontWeights.Bold;
            }

            var fe = model as FrameworkElement;

            if (fe != null)
            {
                _name = fe.Name;
            }

            var dob = model as DependencyObject;

            if (dob != null &&
                dob.GetDescendants().Any())
            {
                this.Children.Add(new StubVisualTreeItemViewModel(this.VisualTreeViewModel, this));
            }

#pragma warning disable 4014
            this.RefreshCommand = new RelayCommand(() => this.RefreshAsync());
#pragma warning restore 4014
        }
        private async Task AddSimilarElementsAsync(List<object> elements, object baseValue, VisualTreeItemViewModel item)
        {
            var dobvm = item as DependencyObjectViewModel;

            if (dobvm != null)
            {
                object itemValue;

                if (TryGetValue(dobvm.Model, out itemValue) &&
                    object.Equals(itemValue, baseValue))
                {
                    elements.Add(item);
                }
            }

            if (item.Children == null ||
                item.Children.Count == 0 ||
                (item.Children.Count == 1 && item.Children[0] is StubVisualTreeItemViewModel))
            {
                await item.LoadChildrenAsync();
            }

            if (item.Children == null)
            {
                return;
            }

            foreach (var child in item.Children)
            {
                await this.AddSimilarElementsAsync(elements, baseValue, (VisualTreeItemViewModel)child);
            }
        }
Beispiel #3
0
        private async Task AddSimilarElementsAsync(List <object> elements, object baseValue, VisualTreeItemViewModel item)
        {
            var dobvm = item as DependencyObjectViewModel;

            if (dobvm != null)
            {
                object itemValue;

                if (TryGetValue(dobvm.Model, out itemValue) &&
                    object.Equals(itemValue, baseValue))
                {
                    elements.Add(item);
                }
            }

            if (item.Children == null ||
                item.Children.Count == 0 ||
                (item.Children.Count == 1 && item.Children[0] is StubVisualTreeItemViewModel))
            {
                await item.LoadChildrenAsync();
            }

            if (item.Children == null)
            {
                return;
            }

            foreach (var child in item.Children)
            {
                await this.AddSimilarElementsAsync(elements, baseValue, (VisualTreeItemViewModel)child);
            }
        }