ICSharpCode.WpfDesign.Designer.Xaml.XamlDesignItem.GetAllChildXamlObjects C# (CSharp) Method

GetAllChildXamlObjects() private method

Get's all Child XamlObject Instances
private GetAllChildXamlObjects ( XamlObject item, bool onlyFromSameNamescope = false ) : IEnumerable
item ICSharpCode.WpfDesign.XamlDom.XamlObject
onlyFromSameNamescope bool
return IEnumerable
        private IEnumerable<XamlObject> GetAllChildXamlObjects(XamlObject item, bool onlyFromSameNamescope = false)
        {
            foreach (var prop in item.Properties)
            {
                if (prop.PropertyValue as XamlObject != null)
                {
                    if (!onlyFromSameNamescope || NameScopeHelper.GetNameScopeFromObject(item) == NameScopeHelper.GetNameScopeFromObject(prop.PropertyValue as XamlObject))
                        yield return prop.PropertyValue as XamlObject;

                    foreach (var i in GetAllChildXamlObjects(prop.PropertyValue as XamlObject))
                    {
                        if (!onlyFromSameNamescope || NameScopeHelper.GetNameScopeFromObject(item) == NameScopeHelper.GetNameScopeFromObject(i))
                            yield return i;
                    }
                }

                if (prop.IsCollection)
                {
                    foreach (var collectionElement in prop.CollectionElements)
                    {
                        if (collectionElement as XamlObject != null)
                        {
                            if (!onlyFromSameNamescope || NameScopeHelper.GetNameScopeFromObject(item) == NameScopeHelper.GetNameScopeFromObject(collectionElement as XamlObject))
                                yield return collectionElement as XamlObject;

                            foreach (var i in GetAllChildXamlObjects(collectionElement as XamlObject))
                            {
                                if (!onlyFromSameNamescope || NameScopeHelper.GetNameScopeFromObject(item) == NameScopeHelper.GetNameScopeFromObject(i))
                                    yield return i;
                            }
                        }
                    }
                }
            }
        }