我需要有关UniformGrid或Grid表的帮助。
简单版本:我有一个只有6个矩形的MainWindow,它们应该填满我的整个MainWindow。当我调整窗口大小时,那些6个矩形需要能够调整大小并保持与所有其他矩形相同的宽度和高度。
[我最终需要用实际内容替换矩形,例如播放6个视频或6个Web浏览器或6个图像等,并且都具有相同的宽度/高度,因为窗口会由用户调整大小。
这里是矩形。
到目前为止,这是我的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则显示如下。 (当用户调整窗口大小以便长度>宽度时)
如果您使用默认大小定义星号和列来定义列和行,则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
的元素和基于窗口的大小来调整网格的ColumnDefinitions
和Grid
。您可以从网格上的Codebehind设置所有内容。
在Xaml中为其命名并在Codebehind中使用,例如grid.RowDefinitions.Add(...);
通过grid.Children.Add(...);
在Codebehind中添加或删除元素
通过静态方法Grid.Row
和Grid.Column
在代码隐藏中设置Grid.SetRow
和Grid.SetColumn