FrameworkElement的子项不会呈现

时间:2015-07-28 22:00:25

标签: c# wpf frameworkelement

我创建了一个自定义FrameworkElement并通过AddLogicalChild方法添加了多个Children,它们也是FrameworkElements。

但是孩子们没有渲染,甚至没有调用OnRender方法。正如方法MeasureOverride和ArrangeOverride。

我做了一些研究,但我遇到了困难,也许有人可以帮助我。

以下是我制作的两个课程。在ChildElement类中,我在每个方法中设置一个断点。但是除了ctor之外,没有调用方法。

public struct Person
{
    public string Name { get; }
    public int Age { get; }

    public Person() { Name = string.Empty; Age = 0; }
}

1 个答案:

答案 0 :(得分:0)

There is a difference between the logical and the visual tree. You want to do this:

public class HostElement : Panel
{
    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.Children.Add(ce);
            }
        }
    }

    // etc...
}

More information about logical vs visual tree