2011-01-12 67 views
10

這似乎是一個這樣簡單的問題,但我一直在嘗試一個小時,似乎無法弄清楚。對接/填充WPF

我想要做的就是用Canvas填充MainWindow。我找不到任何屬性來允許這樣做,我唯一能想到的方法是設置Canvas.Width/Height = MainWindow.Width/Height,但每當窗口大小調整時我都必須這樣做。

在WinForms中,父容器中的元素很容易。

回答

20

只需設置畫布。 HorizontalAlignmentVerticalAlignment爲「拉伸」。這將導致Canvas填充其包含UI元素的可用空間。只要確保不明確指定寬度/高度。

在XAML中,這僅僅是:

<Window ...Other window props... > 
    <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <!-- Canvas items here... --> 
    </Canvas> 
</Window> 
+3

而只是確保你沒有設置寬度/高度屬性顯式地在您的畫布上。 – RQDQ 2011-01-12 18:14:57

+0

這有效。我知道我早些時候嘗試過,但沒有奏效,但是誰知道。謝謝。 - 編輯:我可能設置寬度/高度。 – Eric 2011-01-12 18:15:24

+0

最好。不依賴於其他任何東西。 – 2011-01-12 18:16:51

2

把這個在XAML畫布寬度和高度。

Width="{Binding Path=ActualWidth, ElementName=Window1}" 
Height="{Binding Path=ActualHeight, ElementName=Window1}" 

當調整窗口

0

算了應該隨之改變,好像你必須添加一個DockPanel

<DockPanel Name="dockPanel1"> 
    <Canvas Name="canvas1" Background="White"></Canvas> 
</DockPanel> 
3

在WPF中你可以把你的項目裏面做對接DockPanel並使用Dock繼承的屬性。然而,如果你想讓整個窗口成爲一個畫布,只需使窗口的內容是畫布,而不是另一種面板:

<Window ...> 
    <Canvas> 
     <!-- blah blah --> 
    </Canvas> 
</Window>