У меня есть 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 не отображается. Что я делаю не так?