我想讓我的物件在DockPanel調整視窗大小時自動展開,目前它們只改變它們的位置。
我的 XAML:
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Width="405">
<Image Source="/myImage.png"></Image>
</ScrollViewer>
<Button Width="406"/>
</DockPanel>
uj5u.com熱心網友回復:
主要DockPanel用于相對于彼此定位元素,但它不會按比例分配具有特殊約束的可用空間。
該
SetDock方法更改元素相對于同一容器中其他元素的位置。對齊屬性,例如HorizontalAlignment,更改元素相對于其父元素的位置。
它只允許您讓添加的最后一個孩子占用任何剩余空間。
如果您將該
LastChildFill屬性設定為true(這是默認設定),則 a 的最后一個子元素DockPanel始終填充剩余空間,而不管您在最后一個子元素上設定的任何其他停靠值。
這意味著你可以讓你的ScrollViewer伸展,但不能,Button反之亦然。為此,請將應占用剩余空間的控制元件設定為 中的最后一個DockPanel,例如:
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Button Width="406" DockPanel.Dock="Right"/>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Image Source="/myImage.png"/>
</ScrollViewer>
</DockPanel>
的默認值為LastChildFill,true因此您不必顯式指定它。
滿足您的要求的另一種方法是使用 aGrid代替。AGrid可以*對任何行和列采用比例大小約束(星形大小)。
在 a 中定義的列和行
Grid可以利用星型大小按比例分配剩余空間。當星號被選為行或列的高度或寬度時,該列或行接收剩余可用空間的加權比例。這與 形成對比Auto,后者根據列或行中內容的大小平均分配空間。
這使您可以精確地指定可用空間的分配方式。
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="405*"/>
<ColumnDefinition Width="406*"/>
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Image Source="/myImage.png"/>
</ScrollViewer>
<Button Grid.Column="1"/>
</Grid>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489035.html
