我需要编写一个WPF定制控件,该控件由其他4个FrameworkElement派生的定制类组成。通常我会使用Grid来排列它们,但是Grid存在一些布局问题,因此我必须编写自己的从Panel继承的类。当然,我的自定义控件可以从Panel继承,但是随后将公开Children和其他Panel功能,而这不应该。
我需要一个自定义控件,该控件仅显示我添加的一些属性和典型的FrameworkElement属性。我正在考虑我的自定义控件继承自Control。但是我不想使用ControlTemplates。我想创建面板并从后面的代码中添加FrameworkElements。如何才能做到这一点 ?
让我总结一下问题:1)控制是从中得出的最佳类吗?
2)如何在不使用ControlTemplate的情况下将FrameworkElements添加到Control的派生类?
是的。控制是派生的最佳类别。
您需要重写方法GetVisualChild()和属性VisualChildrenCount。我正在考虑您希望有4个自定义框架元素作为您的孩子,并在构造函数中初始化该集合。然后,代码如下所示
private List<UIElement> visualChildren;
protected override int VisualChildrenCount
{
get
{
return this.visualChildren.Count;
}
}
protected override Visual GetVisualChild(int index)
{
return this.visualChildren[index];
}
您也可以覆盖MeasureOverride和ArrangeOverride方法以将大小分配给子对象,并分别排列子对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句