Exemple #1
0
        public static void CheckSubTree(DependencyObject dObject, DObjectChecker checker, bool failIfNothingFound)
        {
            VisualTreeEnumerator visualTreeEnumerator = new VisualTreeEnumerator(dObject);
            DependencyObjectCheckerEnumerator dObjectCheckerEnumerator = new DependencyObjectCheckerEnumerator(checker);

            dObjectCheckerEnumerator.MoveNext();
            while (visualTreeEnumerator.MoveNext())
            {
                if (dObjectCheckerEnumerator.Current.CheckElement(visualTreeEnumerator.Current, visualTreeEnumerator.Level))
                {
                    DObjectChecker parent = (DObjectChecker)dObjectCheckerEnumerator.CurrentParent;
                    if (parent != null)
                    {
                        Assert.IsTrue(IsParent(dObjectCheckerEnumerator.Current.Element, parent.Element));
                    }
                    if (!dObjectCheckerEnumerator.MoveNext())
                    {
                        checker.CheckLevels();
                        return;
                    }
                }
            }
            if (failIfNothingFound)
            {
                Assert.Fail("Element not found: " + dObjectCheckerEnumerator.Current);
            }
        }
        /// <summary>
        /// Looks for a shared application's AppBar. Assuming the following structure of the visual tree:
        /// this_Page ..->..Frame..->..Page. (according to MS guidelines)
        /// topBar - true to obtain top bar and false to obtain bottom bar
        /// </summary>
        private Panel FindGroupPanel(string groupName)
        {
            Frame frame = this.AssociatedObject.Frame;

            if (frame == null)
            {
                throw new InvalidOperationException("Cannot find shared AppBar. Please make sure that the view is in Frame.");
            }

            Page rootPage = VisualTreeEnumerator.FindParentElement <Page>(frame);

            if (rootPage == null)
            {
                throw new InvalidOperationException("Cannot find shared AppBar. Please make sure that the view is in frame which in turn in a root page.");
            }

            Panel result = null;

            // Try find a panel with specified name
            if (rootPage.BottomAppBar != null)
            {
                result = rootPage.FindName(groupName) as Panel;
            }

            if (result == null)
            {
                throw new InvalidOperationException("Cannot find group in shared AppBar.");
            }

            return(result);
        }
Exemple #3
0
            public void CheckSubTree(DependencyObject dObject)
            {
                VisualTreeEnumerator visualTreeEnumerator = new VisualTreeEnumerator(dObject);
                DependencyObjectCheckerEnumerator dObjectCheckerEnumerator = new DependencyObjectCheckerEnumerator(this);

                dObjectCheckerEnumerator.MoveNext();
                while (visualTreeEnumerator.MoveNext())
                {
                    this.CheckElement(visualTreeEnumerator.Current, visualTreeEnumerator.Level);
                }
            }
        IScrollInfo GetScrollInfo()
        {
            VisualTreeEnumerator enumerator = new VisualTreeEnumerator(grid);

            while (enumerator.MoveNext())
            {
                if (enumerator.Current is DataPresenter)
                {
                    return(enumerator.Current as IScrollInfo);
                }
            }
            return(null);
        }
        public static void ForEachElement(FrameworkElement treeRoot, ElementHandler elementHandler)
        {
            VisualTreeEnumerator en = new VisualTreeEnumerator(treeRoot);

            while (en.MoveNext())
            {
                FrameworkElement element = en.Current as FrameworkElement;
                if (element != null)
                {
                    elementHandler(element);
                }
            }
        }
Exemple #6
0
        public DockLayoutManager FindDockLayoutManager()
        {
            VisualTreeEnumerator e = new VisualTreeEnumerator(this);

            while (e.MoveNext())
            {
                DockLayoutManager manager = e.Current as DockLayoutManager;
                if (manager != null)
                {
                    return(manager);
                }
            }
            return(null);
        }
Exemple #7
0
        public static FrameworkElement FindElement(FrameworkElement treeRoot, System.Predicate <FrameworkElement> predicate)
        {
            VisualTreeEnumerator visualTreeEnumerator = new VisualTreeEnumerator(treeRoot);

            while (visualTreeEnumerator.MoveNext())
            {
                FrameworkElement frameworkElement = visualTreeEnumerator.Current as FrameworkElement;
                if (frameworkElement != null && predicate(frameworkElement))
                {
                    return(frameworkElement);
                }
            }
            return(null);
        }
Exemple #8
0
        private void ExecuteForFoundElements(DependencyObject element, Action <ILayoutSerializer, DependencyObject, string> action)
        {
            var enumerator            = new VisualTreeEnumerator(element);
            var ignoredParentElements = new List <DependencyObject>();

            while (enumerator.MoveNext())
            {
                //Get the current control
                DependencyObject currentElement     = enumerator.Current;
                string           currentElementName = currentElement is FrameworkElement ?
                                                      ((FrameworkElement)currentElement).Name :
                                                      string.Empty;

                //See if we should ignore this control
                if (LayoutSettings.GetIgnoreChildControls(currentElement))
                {
                    LogTo.Debug("Ignoring all children of this control {0} (Name: {1}).", currentElement.GetType(), currentElementName);

                    ignoredParentElements.Add(currentElement);
                    continue;
                }

                //See if there is an serializer for our type
                var serializer = this._layoutSerializers.FirstOrDefault(f => f.ControlType.IsInstanceOfType(currentElement));

                if (serializer == null)
                {
                    continue;
                }

                //See if any of our parents was ignored
                if (enumerator.GetVisualParents().Any(ignoredParentElements.Contains))
                {
                    LogTo.Debug("Ignoring this control {0} (Name: {1}) because a parent was ignored.", currentElement.GetType(), currentElementName);
                    continue;
                }

                //Get the control name
                string controlName = LayoutSettings.GetLayoutControlName(currentElement);

                if (string.IsNullOrWhiteSpace(controlName))
                {
                    LogTo.Debug("Wanted to work with layout of {0} (Name: {1}) but it has no name.", currentElement.GetType(), currentElementName);
                    continue;
                }

                //Execute the actual action
                action(serializer, currentElement, controlName);
            }
        }
        internal static DependencyObject FindElementCore(DependencyObject treeRoot, Predicate <DependencyObject> predicate)
        {
            VisualTreeEnumerator en = new VisualTreeEnumerator(treeRoot);

            while (en.MoveNext())
            {
                DependencyObject element = en.Current;
                if (element != null && predicate(element))
                {
                    return(element);
                }
            }
            return(null);
        }
        protected virtual void OnLoaded(object sender, RoutedEventArgs e)
        {
            VisualTreeEnumerator en = new VisualTreeEnumerator(this);

            while (en.MoveNext())
            {
                BarManager _manager = en.Current as BarManager;
                if (_manager != null)
                {
                    DemoModuleControl.DemoContent = _manager;
                    Manager = _manager;
                    break;
                }
            }
        }
Exemple #11
0
        int GetSelectionBarElementCount(SchedulerControl scheduler)
        {
            List <FrameworkElement> result     = new List <FrameworkElement>();
            VisualTreeEnumerator    treeWalker = new VisualTreeEnumerator(scheduler);

            while (treeWalker.MoveNext())
            {
                FrameworkElement fe = treeWalker.Current as FrameworkElement;
                if (fe == null)
                {
                    continue;
                }
                if (IsRootSelectionBarCell(fe, result))
                {
                    result.Add(fe);
                }
            }
            return(result.Count);
        }
Exemple #12
0
        protected override void RaiseBeforeModuleDisappear()
        {
            base.RaiseBeforeModuleDisappear();
            DisposeList = new List <DockLayoutManager>();
            VisualTreeEnumerator e = new VisualTreeEnumerator(this);

            while (e.MoveNext())
            {
                DockLayoutManager manager = e.Current as DockLayoutManager;
                if (manager != null)
                {
                    DisposeList.Add(manager);
                    manager.Visibility = Visibility.Collapsed;
                    foreach (FloatGroup fGroup  in manager.FloatGroups)
                    {
                        fGroup.IsOpen = false;
                    }
                }
            }
        }
        /// <summary>
        /// Processes group of items (actually selected or deselected), updates row/col spans and put the items into specific states
        /// </summary>
        private void ProcessItemsCollection(IList <object> items, GridView gridView, string newStateName, int rowSpan, int colSpan)
        {
            VariableSizedWrapGrid vswGrid = null;

            foreach (object item in items)
            {
                GridViewItem gridViewItem = gridView.ItemContainerGenerator.ContainerFromItem(item) as GridViewItem;
                if (gridViewItem != null)
                {
                    VariableSizedWrapGrid.SetRowSpan(gridViewItem, rowSpan);
                    VariableSizedWrapGrid.SetColumnSpan(gridViewItem, colSpan);

                    // Update visual state
                    if (newStateName != null && this.TemplateRootElementName != null)
                    {
                        DependencyObject descendant = VisualTreeEnumerator.FindDescendantByName(gridViewItem, this.TemplateRootElementName, false);

                        if (descendant != null)
                        {
                            ExtendedVisualStateManager.GoToElementState(descendant as Grid, newStateName, true);
                        }
                    }

                    if (vswGrid == null)
                    {
                        vswGrid = VisualTreeHelper.GetParent(gridViewItem) as VariableSizedWrapGrid;
                    }
                }
            }

            // Update panel if some of items were updated
            if (vswGrid != null)
            {
                vswGrid.InvalidateMeasure();
            }
        }