How do I make a Canvas
stretch fully horizontally with variable width? This is the parent Canvas
, so it has no parents, only children.
XAML Source: it displays in blend http://resopollution.com/xaml.txt
Use a Grid
as the top level element in your UI - it'll stretch to fill its container. Then put a Canvas
with HorizontalAlignment="Stretch"
inside the Grid
and it'll behave the way you want.
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Background="Blue"/>
</Grid>
That worked for me. The key is your top level UI element. While a Grid
fills all available space by default, Canvas
es take up only as much room as their contents demand.
I'm guessing you've tried canvas.HorizontalAlignment = HorizontalAlignment.Stretch
If this doesn't work, then what you could do is bind the Width
and Height
properties of the canvas to the ActualWidth
and ActualHeight
properties of the containing window.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With