WPF UniformGrid行和列的宽度相同高度

问题描述 投票:0回答:1

我需要有关UniformGrid或Grid表的帮助。

简单版本:我有一个只有6个矩形的MainWindow,它们应该填满我的整个MainWindow。当我调整窗口大小时,那些6个矩形需要能够调整大小并保持与所有其他矩形相同的宽度和高度。

[我最终需要用实际内容替换矩形,例如播放6个视频或6个Web浏览器或6个图像等,并且都具有相同的宽度/高度,因为窗口会由用户调整大小。

这里是矩形。

enter image description here

到目前为止,这是我的XAML代码。它不太有效,因为即使我调整MainWindow的大小,这些矩形都保持为“正方形”,它们的长度始终为width。但是我需要矩形,有时长度可能大于宽度,因为他的窗口可以根据用户的需要进行调整。

        <UniformGrid Rows="2" Columns="3">
            <Rectangle Stretch="UniformToFill" Fill="Black" />
            <Rectangle Stretch="UniformToFill" Fill="Blue" />
            <Rectangle Stretch="UniformToFill" Fill="Red" />
            <Rectangle Stretch="UniformToFill" Fill="Green" />
            <Rectangle Stretch="UniformToFill" Fill="Yellow" />
            <Rectangle Stretch="UniformToFill" Fill="Orange" />
        </UniformGrid>

复杂版本:我最终需要允许用户显示1、2、4或6个显示器,因此他们需要占用整个窗口的宽度/高度。

如果显示2则显示如下。 (当用户调整窗口大小以便长度>宽度时)

enter image description here

c# wpf xaml grid uniformgrid
1个回答
1
投票

如果您使用默认大小定义星号和列来定义列和行,则Grid已经为您提供了调整大小的功能。不用写例如<RowDefinition Height="*"/>,您只需写<RowDefinition/>

因此,这应该起作用:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition/>
    <RowDefinition/>
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition/>
    <ColumnDefinition/>
    <ColumnDefinition/>
  </Grid.ColumnDefinitions>
  <Rectangle Grid.Row="0" Fill="Black" />
  <Rectangle Grid.Column="1" Fill="Blue" />
  <Rectangle Grid.Column="2" Fill="Red" />
  <Rectangle Grid.Row="1" Fill="Green" />
  <Rectangle Grid.Row="1" Grid.Column="1" Fill="Yellow" />
  <Rectangle Grid.Row="1" Grid.Column="2" Fill="Orange" />
</Grid>

对于复杂的情况,如果要创建列或行,则需要根据放入RowDefinitions的元素和基于窗口的大小来调整网格的ColumnDefinitionsGrid。您可以从网格上的Codebehind设置所有内容。

在Xaml中为其命名并在Codebehind中使用,例如grid.RowDefinitions.Add(...);

通过grid.Children.Add(...);在Codebehind中添加或删除元素

通过静态方法Grid.RowGrid.Column在代码隐藏中设置Grid.SetRowGrid.SetColumn

© www.soinside.com 2019 - 2024. All rights reserved.