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); } }
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); } }