0

UserControlにカスタムUIElementsを使用したUIElementCollectionがあります。ただし、UIElementsは表示されません。どうしたの?

public partial class MyControl : UserControl
{
    public static readonly DependencyProperty ChildrenProperty = DependencyProperty.Register("Children", typeof(UIElementCollection), typeof(MyControl), null);

    public UIElementCollection Children
    {
        get { return (UIElementCollection)GetValue(ChildrenProperty); }
        set { SetValue(ChildrenProperty, value); }
    }

    protected override Size MeasureOverride(Size availableSize)
    {
        Children.Clear();
        UserControl child = new SecondUserControl();
        child.Measure(availableSize);
        Children.Add(child);
    }

    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in Children)
        {
            child.Arrange(new Rect(0,0, child.DesiredSize.Width, child.DesiredSize.Height));
        }
        return finalSize;
    }
}
4

1 に答える 1

0

オイベイ。あなたがやろうとしていることが何であれ、それはそれをする方法ではありません。

まず、ChildrenコレクションがUIに到達することはありません。プロパティを宣言して測定するだけでは、実際にはUIに追加されません。UserControl.Contentの何かに子を追加して、子がビジュアルトレの一部であることを確認する必要があります。

次に、メジャーパスごとに子を追加および削除するのはなぜですか。これは、どのユースケースにも意味がありません。Measure&Arrangeパスは、コントロールを削除/追加するときではなく、コントロールを測定して配置するときです。

于 2013-02-14T01:03:33.340 に答える