Export (0) Print
Expand All

How to: Create a Custom Panel Element

This example shows how to override the default layout behavior of the Panel element and create custom layout elements that are derived from Panel.

The example defines a simple custom Panel element called PlotPanel, which positions child elements according to two hard-coded x- and y-coordinates. In this example, x and y are both set to 50; therefore, all child elements are positioned at that location on the x and y axes.

To implement custom Panel behaviors, the example uses the MeasureOverride and ArrangeOverride methods. Each method returns the Size data that is necessary to position and render child elements.

public: 
   ref class PlotPanel : Panel {

   public: 
      PlotPanel () {};

   protected: 
      // Override the default Measure method of Panel 

      virtual Size MeasureOverride (Size availableSize) override 
      {
         Size childSize = availableSize;
         for each (UIElement^ child in InternalChildren)
         {
            child->Measure(childSize);
         }
         return availableSize;
      };

   protected: 
      virtual System::Windows::Size ArrangeOverride (Size finalSize) override 
      {
         for each (UIElement^ child in InternalChildren)
         {
            double x = 50;
            double y = 50;
            child->Arrange(Rect(Point(x, y), child->DesiredSize));
         }
         return finalSize;
      };
   };

For the complete sample, see Create a Simple Custom Panel Sample.

Community Additions

ADD
Show:
© 2014 Microsoft