当窗口设置为最大化时,如何调整wpf表单上的所有对象的大小

时间:2016-07-06 20:08:09

标签: c# wpf

我是WPF表单的新手,所以这可能很简单,但是......

我创建了一个新的wpf表单并添加了12个图像。我将窗口设置为最大化,我相信它适合任何监视器,对吧?如何让我的对象移动,以便在最大化模式下看起来大致相同?

第一个图像是设计师的样子,第二个是程序运行时的样子。

In the designer: When running:

4 个答案:

答案 0 :(得分:0)

我建议您使用WrapPanel来布置图像:

<WrapPanel>
<Image x:Name="b1" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="blackCircle.png" Visibility="Hidden"/>
    <Image x:Name="b2" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="blackCircle.png"/>
    <Image x:Name="b4" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="blackCircle.png"/>
    <Image x:Name="b3" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="blackCircle.png" Visibility="Hidden"/>
    <Image x:Name="b5" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="blackCircle.png" Visibility="Hidden"/>
    <Image x:Name="b6" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="blackCircle.png"/>        
    <Image x:Name="y1" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="51" Source="yellowCircle.png"/>
    <Image x:Name="y2" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="51" Source="yellowCircle.png" Visibility="Hidden"/>
    <Image x:Name="y3" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="51" Source="yellowCircle.png"/>
    <Image x:Name="y4" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="yellowCircle.png" Visibility="Hidden"/>
    <Image x:Name="y5" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="yellowCircle.png"/>
    <Image x:Name="y6" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Source="yellowCircle.png" Visibility="Hidden"/>
</WrapPanel>
如果没有足够的空间,

WrapPanel会自动换行到新行。

<强>更新

我已经对5张图片进行了测试,但你可以拍摄12张图片。要做12张图像,你应该添加12列。让我举个例子:

<Window x:Class="SOWpfApplication.MainWindow"
       <!--The code omitted for the brevity-->
        >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="2*"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Image Source="/Images/Back.jpg" Stretch="UniformToFill"/>
            <Image Source="/Images/Forward.jpg" Grid.Column="1" Stretch="UniformToFill"/>
            <Image Source="/Images/Back.jpg" Grid.Column="2" Stretch="UniformToFill"/>
            <Image Source="/Images/Back.jpg" Grid.Column="3" Stretch="UniformToFill"/>
            <Image Source="/Images/Forward.jpg" Grid.Column="4" Stretch="UniformToFill"/>
        </Grid>

        <TextBlock Text="Time is up!" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50"/>        
        <Button Margin="10" Grid.Row="2" HorizontalAlignment="Left" Height="42" Width="150" Content="Close" />
    </Grid>
</Window>

答案 1 :(得分:0)

我通常做的是在你要展开的部分的编辑器中,选择顶部和右边的锚点,因为这通常足以达到我的目的。但是,请使用锚点,因为这将使您获得所需的缩放比例。在您的情况下,您可能希望锚定您想要缩放的所有四边。

<强> 修改

或者,您也可以为垂直和水平对齐选择拉伸,这也会导致拉伸。请注意,只需确保使用边距将图像定位到所需的位置。

答案 2 :(得分:0)

尝试设置高度&amp; width属性为“Auto”,这将自动调整表单上的所有元素。

的问候, 维沙尔

答案 3 :(得分:0)

显然,您希望扩展整个UI。然后ViewBox控件非常有用:

<Window ...>
  <ViewBox>
      <Grid Height="800" Width="600">
          <!-- Everything inside viewbox will be stretched as you resize window
               Place you UI assuming you have virtual resolution 800x600 -->
      </Grid>
  </ViewBox>
</Window>