WPF UserControl не оттянут при переопределении MeasureOverride и ArrangeOverride

У меня есть UserControl, бывший похожий на это:

<UserControl
    MaxHeight="32"
    MaxWidth="32"
    MinHeight="25"
    MinWidth="25">
    <DockPanel>
        <!-- some stuff -->
    </DockPanel>
</UserControl>

В дополнение к минимальному ограничению размера / макс. ограничению размера, я, всегда хочу управление будучи нарисованным Width = Height. Таким образом, я переопределяю MeasureOverride и ArrangeOverride:

protected override Size MeasureOverride(Size availableSize)
{
    var resultSize = new Size(0, 0);
    ((UIElement)Content).Measure(availableSize);
    var sideLength = Math.Min(((UIElement)Content).DesiredSize.Width, ((UIElement)Content).DesiredSize.Height);

    resultSize.Width = sideLength;
    resultSize.Height = sideLength;

    return resultSize;
}

protected override Size ArrangeOverride(Size finalSize)
{
    ((UIElement)Content).Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height));
    return finalSize;
}

Я понимаю, что должен звонить Measure и Arrange на каждом ребенке UserControl. Так как DocPanel является единственным ребенком моего UserControl, и (в моем понимании) хранится в Content свойство UserControl, я просто звоню Measure и Arrange на этом свойстве Content. Однако UserControl не отображен. Что я делаю неправильно?

6
задан 9 March 2010 в 13:47
поделиться