Dot-Net
WPF:如何使畫布自動調整大小?
我希望我
Canvas能夠自動調整其項目的大小,以便ScrollViewer捲動條具有正確的範圍。這可以在 XAML 中完成嗎?<ScrollViewer HorizontalScrollBarVisibility="Auto" x:Name="_scrollViewer"> <Grid x:Name ="_canvasGrid" Background="Yellow"> <Canvas x:Name="_canvas" HorizontalAlignment="Left" VerticalAlignment="Top" Background="Green"></Canvas> <Line IsHitTestVisible="False" .../> </Grid> </ScrollViewer>在上面的程式碼中,畫布的大小始終為 0,儘管它不會剪切其子項。
不,這是不可能的(請參閱下面的 MSDN 片段)。但是,如果您想要捲動條和自動調整大小,請考慮改用Grid,並使用 Margin 屬性將您的項目放置在此 Grid 上。Grid 將告訴 ScrollViewer 他想要多大,您將獲得捲動條.. Canvas 將始終告訴 ScrollViewer 他不需要任何大小.. :)
網格讓您享受兩個世界 - 只要您將所有元素放入一個單元格中,您就可以同時獲得:任意定位和自動調整大小。一般來說,最好記住大多數面板控制項(DockPanel、StackPanel 等)都可以通過 Grid 控制項實現。
來自MSDN:
Canvas 是唯一沒有固有佈局特徵的面板元素。Canvas 的預設高度和寬度屬性為零,除非它是自動調整其子元素大小的元素的子元素。Canvas 的子元素永遠不會調整大小,它們只是定位在指定的座標處。這為不需要或不需要固有尺寸約束或對齊的情況提供了靈活性。對於您希望子內容自動調整大小和對齊的情況,通常最好使用 Grid 元素。
希望這可以幫助