Stretching a WPF Canvas Horizontally

resopollution picture resopollution · Jun 3, 2009 · Viewed 14.1k times · Source

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

Answer

James Cadd picture James Cadd · Jun 3, 2009

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, Canvases take up only as much room as their contents demand.