我创建了一个自定义 FrameworkElement 并通过 AddLogicalChild 方法添加了多个子项,它们也是 FrameworkElements。
但是没有渲染孩子,甚至没有调用 OnRender 方法。就像 MeasureOverride 和 ArrangeOverride 方法一样。
我做了一些研究,但我陷入了困境,也许有人可以帮助我。
这是我制作的两个类。在 ChildElement 类中,我在每个方法中都设置了一个断点。但是,如果调用了方法,则除了 ctor 之外没有。
public class HostElement : FrameworkElement
{
public HostElement()
{
ChildElement ce;
Int32 rows = 5;
Int32 cols = 5;
for (Int32 i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
ce = new ChildElement();
this.AddLogicalChild(ce);
}
}
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
drawingContext.DrawRectangle(Brushes.LightBlue, null, new Rect(0, 0, this.ActualWidth, this.ActualHeight));
}
}
public class ChildElement : FrameworkElement
{
public ChildElement()
{
}
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
}
protected override Size MeasureOverride(Size availableSize)
{
return base.MeasureOverride(availableSize);
}
protected override Size ArrangeOverride(Size finalSize)
{
return base.ArrangeOverride(finalSize);
}
}