カスタム FrameworkElement を作成し、AddLogicalChild メソッドを使用して、FrameworkElement でもある複数の子を追加しました。
ただし、子はレンダリングされず、OnRender メソッドも呼び出されません。メソッド MeasureOverride および ArrangeOverride と同様です。
私はいくつかの調査を行いましたが、行き詰まりました。誰かが私を助けてくれるかもしれません。
これが私が作った2つのクラスです。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);
}
}