Xaml uwp UniformGrid在行之间具有不需要的垂直间距
我有多个文本框,我希望在固定的2列中从左向右填充一个适当的流,因为代码中有运行时逻辑,任何文本框的可见性都可以更改,所以我希望在任何给定时间所有可见框都正确对齐,这就是我使用community toolkit中的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=
<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为网格的高度添加一个转换器,以计算所需的高度,怎么样?