2009-06-03 112 views

回答

14

使用Grid作爲UI中的頂級元素 - 它將伸展以填充其容器。然後將CanvasHorizontalAlignment="Stretch"放在Grid之內,它會按照您的要求行事。

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Canvas Background="Blue"/> 
</Grid> 

這對我有用。關鍵是您的頂級UI元素。雖然Grid默認填充所有可用空間,但Canvas只佔用與其內容需求相同的空間。

1

你可以使用一個固定面板得到它填補了可用寬度。控制面板控件列表中的最後一項會自動拉伸以填充剩餘空間。

<DockPanel> 
    <Canvas /> 
</DockPanel> 
+0

有沒有快速的方法來做標籤? – resopollution 2009-06-03 19:14:24

+0

我嘗試刪除高度和寬度屬性,但一切都消失了。 – resopollution 2009-06-03 19:22:45

1

除非手動設置高度和/或寬度,否則畫布應該自動執行此操作。你想把畫布放在什麼樣的控制上?你能發佈你的代碼嗎?

+0

我已經發布了我的代碼。畫布是整個應用程序的主要父元素。 – resopollution 2009-06-03 19:21:52

+0

我嘗試刪除高度和寬度屬性,但一切都消失了。 – resopollution 2009-06-03 19:22:54

4

我猜你已經試過
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

如果這不起作用,你可以做的又是什麼綁定畫布的WidthHeight屬性含有的ActualWidthActualHeight性質窗口。

1

問題是您指定的是HeightWidth。如果沒有這些屬性,控件可能會在設計器中消失,但在將畫布插入另一個控件時,它應該適當調整大小。

如果我正確記得,WPF的下一個版本將具有「DesignWidth」和「DesignHeight」屬性,允許您在設計器中以給定大小顯示控件,而不會影響插入其他控件時的測量。