如何在WPF组件中使用百分比调整大小?

时间:2012-10-31 11:01:14

标签: wpf xaml

我正在使用WPF矩形,需要在重新调整窗口大小时重新调整大小。我尝试了几个帮助发布了几个地方,比如在尺寸之后使用星号(“*”)但是没有用。关于此事的任何帮助?

 <StackPanel>
   <Rectangle Height="5">
   <Rectangle Height="495">
     <Rectangle.Fill>
       <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
         <GradientStop Color="#F7F6EF" Offset="0.0"></GradientStop>
         <GradientStop Color="#E5DABE" Offset="1.0"></GradientStop>
       </LinearGradientBrush>
     </Rectangle.Fill>
   </Rectangle>
 </StackPanel>

3 个答案:

答案 0 :(得分:1)

调整网格及其子元素的大小,然后将其放在视图框中。它将全部扩展和收缩。

<Viewbox Stretch="Uniform" MinHeight="700" MinWidth="258">   
<Grid Height="700" Width="250">
<Grid Width="235" Margin="0,15,0,0" Height="620">
</Grid>
</Grid>
</Viewbox>

那种事 你甚至可以创造一些好的东西,比如强迫拉伸变得均匀,这就是我认为你所追求的。

请记住,你需要在顶部:

ResizeMode="CanResizeWithGrip"

显然它不需要抓握,只是没有假,但我喜欢抓地力。编辑:我认为这是默认的。

请注意,视图框只能有一个子视图,因此请确保仍然使用网格/画布等来绘制矩形,就像正常一样。如果你试图聪明地动态地在视图框中设置网格的大小,它也会搞砸。

答案 1 :(得分:1)

只需将StackPanel更改为DockPanel

即可

答案 2 :(得分:0)

如果您希望将内部矩形绑定到网格的两侧并按比例缩放比例,请使用horizo​​ntalalign和verticalalign。这会将子元素的边“固定”到父容器。

<Grid.ColumnDefinitions>
   <ColumnDefinition MinWidth="1*"></ColumnDefinition>
   <ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Rectangle Column="0" HorizontalAlign="stretch" VerticalAlign="stretch"/>

使用星号使用内部算法,该算法根据设定值划分元素(1 *和2 *相当于第一列占据屏幕的1/3,第二列占据屏幕的2/3 )