public virtual void ReportElementsWithAttachedProperties(List <IDockPanel> dockPanels, List <IGrid> grids) { foreach (ILayoutElement Item in Items) { if (Item is IPanel AsPanel) { AsPanel.ReportElementsWithAttachedProperties(dockPanels, grids); } } }
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); } } } }
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; } } } }
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; } } } }