I need to create a UserControl, which is hosted within a "parent" ContentControl who is set with "Center" Horizontal and Vertical alignment.
This control hosts another "child" UserControl, which I would like to be as big as it can get without stretching over the render-able size.
I noticed that if I set the child's size to be bigger than the render-able size, i get the size I want as a "DesiredSize" property on that control. However I don't see how can I get that information without oversizing the control.
I've created this sample to illustrate the situation, I want "ChildControl"'s pink background to stretch over the entire window.
Just to clarify, I only have control on "ControlableElementA" and "ControlableElementB" I cannot bind to the main window, in the actual application I use this as an embedded window with varying levels of hierarchy in between..
The "ChildControl" and "ParentControl" are beyond my reach due to constraints above me.
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300">
<Grid>
<ContentControl Name="ParentControl" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid Name="ControlableElementA" Background="Black" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ContentControl Name="ControlableElementB">
<Grid Name="ChildControl" Background="Pink" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Button Width="30" Height="30"></Button>
</Grid>
</ContentControl>
</Grid>
</ContentControl>
</Grid>
</Window>
Thanks ahead, I apologize if the description is a little cryptic
HorizontalAlignment
andVerticalAlignment
asStretch
means "Stretch to the maximum size within the bounds of the parent container."However, your parent container is set to
Center
, which means yourUserControl
effectively has anAuto
width and height.To fix this, simply remove:
From the
ContentControl
.