Beispiel #1
0
        internal static IEnumerable <DependencyObject> GetAncestors(DependencyObject depObj, bool self, TreeEnumerationStrategy strategy)
        {
            if (depObj == null)
            {
                yield break;
            }

            if (self)
            {
                yield return(depObj);
            }

            for (var parent = strategy.GetAncestor(depObj);
                 parent != null;
                 parent = strategy.GetAncestor(parent))
            {
                yield return(parent);
            }
        }
        public override DependencyObject GetAncestor(DependencyObject dependencyObject)
        {
            if (dependencyObject == null)
            {
                return(null);
            }

            if (_disconnectedTree)
            {
                var disconnectedParent = PresentationTreeUtils.GetDisconnectedParent(dependencyObject);
                if (disconnectedParent != null)
                {
                    return(disconnectedParent);
                }
            }

            return(_firstStrategy.GetAncestor(dependencyObject) ?? _secondStrategy.GetAncestor(dependencyObject));
        }
Beispiel #3
0
 internal static DependencyObject GetParent(DependencyObject dependencyObject, TreeEnumerationStrategy strategy)
 {
     return(strategy.GetAncestor(dependencyObject));
 }