Ich habe ein Usercontrol wie folgt aussehen:WPF Usercontrol nicht gezogen wird, wenn zwingende MeasureOverride und ArrangeOverride
<UserControl
MaxHeight="32"
MaxWidth="32"
MinHeight="25"
MinWidth="25">
<DockPanel>
<!-- some stuff -->
</DockPanel>
</UserControl>
Neben der Min-/Max-Größe Einschränkung, möchte ich die Kontrolle immer mit Width = Height
gemalt. So überschreiben i MeasureOverride
und 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;
}
Ich verstehe, dass ich Measure
und Arrange
auf jedes Kind von dem Usercontrol nennen müssen. Da das DocPanel das einzige Kind meines Benutzersteuerelements ist und meines Wissens nach in der Content
-Eigenschaft des UserControl gespeichert ist, rufe ich einfach Measure
und Arrange
für diese Content-Eigenschaft auf. Das UserControl wird jedoch nicht angezeigt. Was mache ich falsch?