Практическое руководство. Создание пользовательского элемента панели
Пример
В этом примере показано, как переопределить поведение по умолчанию макет Panel элемент и создать пользовательский макет элементов, которые являются производными от Panel.
В примере определяется простой пользовательский Panel элемент с именем PlotPanel
, который размещает дочерние элементы в соответствии с двумя жестко координаты x и y-. В этом примере x
и y
устанавливается 50
; таким образом, все дочерние элементы располагаются в этом расположении на x и y осей.
Чтобы реализовать пользовательскую Panel поведения, в примере используется MeasureOverride и ArrangeOverride методы. Каждый метод возвращает Size данные, необходимые для размещения и отображения дочерних элементов.
public class PlotPanel : Panel
{
// Default public constructor
public PlotPanel()
: base()
{
}
// Override the default Measure method of Panel
protected override Size MeasureOverride(Size availableSize)
{
Size panelDesiredSize = new Size();
// In our example, we just have one child.
// Report that our panel requires just the size of its only child.
foreach (UIElement child in InternalChildren)
{
child.Measure(availableSize);
panelDesiredSize = child.DesiredSize;
}
return panelDesiredSize ;
}
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; // Returns the final Arranged size
}
}