Xaml uwp UniformGrid在行之间具有不需要的垂直间距

Xaml uwp UniformGrid在行之间具有不需要的垂直间距,xaml,layout,uwp,grid,windows-community-toolkit,Xaml,Layout,Uwp,Grid,Windows Community Toolkit,我有多个文本框,我希望在固定的2列中从左向右填充一个适当的流,因为代码中有运行时逻辑,任何文本框的可见性都可以更改,所以我希望在任何给定时间所有可见框都正确对齐,这就是我使用community toolkit中的UniformGrid的原因,但是在所有行之间存在一些不必要的垂直间距 复制该问题的示例项目: 示例代码 <Grid> <controls:UniformGrid x:Name="CommonPanel" Background=

我有多个文本框,我希望在固定的2列中从左向右填充一个适当的流,因为代码中有运行时逻辑,任何文本框的可见性都可以更改,所以我希望在任何给定时间所有可见框都正确对齐,这就是我使用community toolkit中的UniformGrid的原因,但是在所有行之间存在一些不必要的垂直间距

复制该问题的示例项目:

示例代码

<Grid>
    <controls:UniformGrid
        x:Name="CommonPanel"
        Background="Brown"
        Columns="2"
        Orientation="Horizontal">
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
        <TextBox Height="112" HorizontalAlignment="Stretch" />
    </controls:UniformGrid>
</Grid>

每个项目的上下似乎都有某种程度的差距,但我不确定它是从哪里来的

更新1

这是一个示例项目,我的原始项目中每个文本框的高度为112,有些文本框的高度是112的两倍,我们还可能会动态生成其中一些文本框,所以我想我可能需要将大高度文本框分开,但有没有办法为所有行设置相同的高度?考虑到我不知道确切的行数

我试着跟在后面,但第一排的高度是112


有两个组件在起作用,文本框(27px)和边框之间的空间

如果在这些文本框中选择,您将看到边框颜色变为蓝色。如果将鼠标悬停在这些边界上,您将看到这些边界的视觉状态发生变化

要删除它,请将BorderThickness设置为0:


或者让自己更轻松,创建隐式文本框样式:


现在,让我们讨论剩余的像素填充。您已经硬编码了文本框的高度,这限制了它可以填充多少空间。要删除该填充,请将其从样式中删除:


理解布局 我想添加一些附加信息,以防您试图将行调整为112像素

您可以将UniformGrid视为自己手动添加行定义和列定义


由于UniformGrid中有11个子项,并将列设置为2,因此实际上与此相同:


更新 加载
UniformGrid
RowDefinitions后,可以动态覆盖其大小调整。这将使行高度缩小到文本框使用的112像素

XAML-订阅加载的事件


``
```csharp
//将在加载UniformGrid时激发
已加载私有void CommonPanel_(对象发送方,Windows.UI.Xaml.RoutedEventArgs e)
{
//迭代所有行定义
对于(int i=0;i
最后,还有最后一步确保最后一行的文本框正确对齐。将样式的垂直对齐设置为顶部:


重要
如果在运行时向UniformGrid添加新项,则需要再次重新运行该逻辑。

请参阅我的回复中的更新部分。我提供了一种方法,可以动态迭代UniFormGrid的RowDefinition集合并设置RowHeight@touseefbsb为网格的高度添加一个转换器,以计算所需的高度,怎么样?