コード例 #1
0
 public virtual void ReportElementsWithAttachedProperties(List <IDockPanel> dockPanels, List <IGrid> grids)
 {
     foreach (ILayoutElement Item in Items)
     {
         if (Item is IPanel AsPanel)
         {
             AsPanel.ReportElementsWithAttachedProperties(dockPanels, grids);
         }
     }
 }
コード例 #2
0
 public virtual void ReportControlsUsingComponent(List <IControl> controlList, IComponentWithEvent component)
 {
     foreach (ILayoutElement Item in Items)
     {
         if (Item is IPanel AsPanel)
         {
             AsPanel.ReportControlsUsingComponent(controlList, component);
         }
         else if (Item is IControl AsControl)
         {
             if (AsControl.Component == component)
             {
                 controlList.Add(AsControl);
             }
         }
     }
 }
コード例 #3
0
        private static void FixSiblingDimension(object sender, string SiblingName, UpdateLengthHandler Handler, SizeChangedEventHandler EventHandler)
        {
            FrameworkElement SenderElement = sender as FrameworkElement;
            Size             AdjustedSize  = new Size(SenderElement.ActualWidth, SenderElement.ActualHeight);

            if ((!double.IsNaN(AdjustedSize.Width) && AdjustedSize.Width > 0) ||
                (!double.IsNaN(AdjustedSize.Height) && AdjustedSize.Height > 0))
            {
                FrameworkElement CurrentElement = SenderElement;

                while (CurrentElement != null)
                {
                    Panel            AsPanel;
                    FrameworkElement AsFrameworkElement;

                    if ((AsPanel = CurrentElement as Panel) != null)
                    {
                        FrameworkElement AsSibling;
                        if ((AsSibling = AsPanel.FindName(SiblingName) as FrameworkElement) != null)
                        {
                            if (double.IsNaN(AsSibling.Height))
                            {
                                SenderElement.SizeChanged -= EventHandler;
                                Handler(AsSibling, AdjustedSize);
                            }
                        }

                        break;
                    }

                    else if ((AsFrameworkElement = CurrentElement.Parent as FrameworkElement) != null)
                    {
                        CurrentElement = AsFrameworkElement;
                    }

                    else
                    {
                        break;
                    }
                }
            }
        }
コード例 #4
0
        private static void FixSiblingDimension(object sender, string siblingName, UpdateLengthHandler handler, SizeChangedEventHandler eventHandler)
        {
            FrameworkElement SenderElement = (FrameworkElement)sender;
            Size             AdjustedSize  = new Size(SenderElement.ActualWidth, SenderElement.ActualHeight);

            if ((!double.IsNaN(AdjustedSize.Width) && AdjustedSize.Width > 0) ||
                (!double.IsNaN(AdjustedSize.Height) && AdjustedSize.Height > 0))
            {
                FrameworkElement CurrentElement = SenderElement;

                while (true)
                {
                    if (CurrentElement is Panel AsPanel)
                    {
                        if (AsPanel.FindName(siblingName) is FrameworkElement AsSibling)
                        {
                            if (double.IsNaN(AsSibling.Height))
                            {
                                SenderElement.SizeChanged -= eventHandler;
                                handler(AsSibling, AdjustedSize);
                            }
                        }

                        break;
                    }
                    else if (CurrentElement.Parent is FrameworkElement AsFrameworkElement)
                    {
                        CurrentElement = AsFrameworkElement;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }