Override the default layout behavior of the Panel element and create custom layout elements that are derived from Panel. : Panel « Windows Presentation Foundation « C# / CSharp Tutorial






using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media;
using System.Threading;
        public class PlotPanel : Panel
        {
            public PlotPanel(): base()
            {
            }
            protected override Size MeasureOverride(Size availableSize)
            {
                Size childSize = availableSize;
                foreach (UIElement child in InternalChildren)
                {
                    child.Measure(childSize);
                }
                return availableSize;
            }
            protected override Size ArrangeOverride(Size finalSize)
            {
                foreach (UIElement child in InternalChildren)
                {
                    double x = 50;
                    double y = 50;

                    child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
                }
                return finalSize; 
            }
        }
  public class app : System.Windows.Application
  {
        PlotPanel plot1 = new PlotPanel();
        Window mainWindow = new System.Windows.Window();
        Rectangle rect1 = new Rectangle();

        protected override void OnStartup (StartupEventArgs e)
    {
        base.OnStartup (e);
            plot1.Background = Brushes.White;
            rect1.Fill = Brushes.CornflowerBlue;
            rect1.Width = 200;
            rect1.Height = 200;
            mainWindow.Content = plot1;
            plot1.Children.Add(rect1);
            mainWindow.Title = "Custom Panel Sample";
            mainWindow.Show();
    }
    [System.STAThread()]
    private static void Main()
    {
      app app = new app();
      app.Run();
    }
  }








24.55.Panel
24.55.1.Add a control to a PanelAdd a control to a Panel
24.55.2.Remove Control from a PanelRemove Control from a Panel
24.55.3.Insert Button to a PanelInsert Button to a Panel
24.55.4.Add child controlAdd child control
24.55.5.Show Index of ControlsShow Index of Controls
24.55.6.Clear ControlsClear Controls
24.55.7.Contains Element?Contains Element?
24.55.8.UIElement CountUIElement Count
24.55.9.Get Item At Index Position [0]Get Item At Index Position [0]
24.55.10.Panel is setting the data context to the scrollbar objectPanel is setting the data context to the scrollbar object
24.55.11.Find the index number of a newly added element within a panel, using the IndexOf methodFind the index number of a newly added element within a panel, using the IndexOf method
24.55.12.Insert to a Panel by indexInsert to a Panel by index
24.55.13.Get all children from a PanelGet all children from a Panel
24.55.14.Search for an element by using Panel.FindName()Search for an element by using Panel.FindName()
24.55.15.Panel.ZIndexPanel.ZIndex
24.55.16.Without Panel.ZIndexWithout Panel.ZIndex
24.55.17.Override the default layout behavior of the Panel element and create custom layout elements that are derived from Panel.