如何使WPF窗口响应

Ari*_*jee 18 wpf

我正在使用Blend Expression,刚开始使用WPF.

我正在尝试制作一个窗口响应窗口,它可以容纳多个网格,并根据窗口大小重新调整大小到最小宽度.

它会像:

在此输入图像描述

我的代码到目前为止:

<Window x:Class="Blend.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" WindowState="Maximized">
    <Grid>
    <Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
                    Padding="5" HorizontalAlignment="Left" Margin="20,10,0,0" 
                    VerticalAlignment="Top" Height="211.5" Width="484.5">
    <Grid Background="#FFEDF3F8">

    </Grid>
    </Border>
    <Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
        Padding="5" Margin="523.333,10,16.334,283.5">
        <Grid Background="#FFEDF3F8"/>
    </Border>
    <Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
        Padding="5" Margin="21.333,234,16.334,144">
        <Grid Background="#FFEDF3F8"/>
    </Border>
    <Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
        Padding="5" Margin="21.333,372,16.334,31.5">
        <Grid Background="#FFEDF3F8"/>
    </Border>
    <Button Content="Button" HorizontalAlignment="Left" Margin="626.833,478.5,0,0"
     VerticalAlignment="Top" Width="49" Background="#FF00458C"/>
    <Button Content="Button" HorizontalAlignment="Left" Margin="693.166,478.5,0,0" 
    VerticalAlignment="Top" Width="49" Background="#FF00458C"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

我在这里尝试过2件事,其中一件是Margin和' Width和'一起使用'对齐' Height.

不确定哪个会解决我的目的,其次它会响应屏幕尺寸.

我使用*阅读有关动态网格的内容,但这似乎不适用于此.

谢谢,

Gim*_*mly 23

您没有以正确的方式使用网格.

WPF网格具有允许设置列和行的属性.然后,您将元素放在网格中并设置它们应该去的行/列.

当然你可以在网格内部使用网格等等.

然后你可以使用Width ="2*"和类似的东西来制作比其他更大或更小的列,"相应地".

下面的代码应该为您提供与您尝试实现的"类似"的东西.

<Grid>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <Grid Grid.Row="0"
          Grid.Column="0"
          Background="Red" />

    <Grid Grid.Row="0"
          Grid.Column="1"
          Background="Blue" />

    <Grid Grid.Row="1"
          Grid.Column="0"
          Grid.ColumnSpan="2"
          Background="Violet" />

    <Grid Grid.Row="2"
          Grid.Column="0"
          Grid.ColumnSpan="2"
          Background="Green" />

    <StackPanel Grid.Row="3"
                Grid.ColumnSpan="2"
                Orientation="Horizontal">
         <Button>OK</Button>
         <Button>Cancel</Button>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

您可以使用"*"和"自动"来表示列和行的宽度和高度,"*"始终定义为当前窗口宽度或高度的"百分比".如果您有一列带有"*"而另一列带有"2*",则带有"2*"的列将是仅带有"*"的列的两倍,这将使2/3 1/3分离.

"自动"意味着它将采用"允许显示列内部的较小宽度或高度".

  • Grid.Row ="0"并且Grid.Column ="0"不是必需的,因为它是默认值,所以如果你不设置它们,它会将这些项放在第一列,第一行(但我想添加它们,因为它直接为您提供项目所在的信息).背景我在我的示例中添加了仅仅是为了查看网格的去向,因此您可以将其删除.关于样式,请检查此(第一个谷歌结果...)网页:http://wpftutorial.net/Styles.html (3认同)