WinRTXamlToolkit.Debugging.ViewModels.BasePropertyViewModel.AddSimilarElementsAsync C# (CSharp) Method

AddSimilarElementsAsync() private method

private AddSimilarElementsAsync ( List elements, object baseValue, VisualTreeItemViewModel item ) : System.Threading.Tasks.Task
elements List
baseValue object
item VisualTreeItemViewModel
return System.Threading.Tasks.Task
        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);
            }
        }
        #endregion