這似乎是一個這樣簡單的問題,但我一直在嘗試一個小時,似乎無法弄清楚。對接/填充WPF
我想要做的就是用Canvas填充MainWindow。我找不到任何屬性來允許這樣做,我唯一能想到的方法是設置Canvas.Width/Height = MainWindow.Width/Height
,但每當窗口大小調整時我都必須這樣做。
在WinForms中,父容器中的元素很容易。
這似乎是一個這樣簡單的問題,但我一直在嘗試一個小時,似乎無法弄清楚。對接/填充WPF
我想要做的就是用Canvas填充MainWindow。我找不到任何屬性來允許這樣做,我唯一能想到的方法是設置Canvas.Width/Height = MainWindow.Width/Height
,但每當窗口大小調整時我都必須這樣做。
在WinForms中,父容器中的元素很容易。
只需設置畫布。 HorizontalAlignment和VerticalAlignment爲「拉伸」。這將導致Canvas填充其包含UI元素的可用空間。只要確保不明確指定寬度/高度。
在XAML中,這僅僅是:
<Window ...Other window props... >
<Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- Canvas items here... -->
</Canvas>
</Window>
把這個在XAML畫布寬度和高度。
Width="{Binding Path=ActualWidth, ElementName=Window1}"
Height="{Binding Path=ActualHeight, ElementName=Window1}"
當調整窗口
算了應該隨之改變,好像你必須添加一個DockPanel
:
<DockPanel Name="dockPanel1">
<Canvas Name="canvas1" Background="White"></Canvas>
</DockPanel>
在WPF中你可以把你的項目裏面做對接DockPanel並使用Dock繼承的屬性。然而,如果你想讓整個窗口成爲一個畫布,只需使窗口的內容是畫布,而不是另一種面板:
<Window ...>
<Canvas>
<!-- blah blah -->
</Canvas>
</Window>
而只是確保你沒有設置寬度/高度屬性顯式地在您的畫布上。 – RQDQ 2011-01-12 18:14:57
這有效。我知道我早些時候嘗試過,但沒有奏效,但是誰知道。謝謝。 - 編輯:我可能設置寬度/高度。 – Eric 2011-01-12 18:15:24
最好。不依賴於其他任何東西。 – 2011-01-12 18:16:51