如何在 WinUI 3 中的 ItemsRepeater 中填充 TextBox?
How to fill TextBox inside ItemsRepeater in WinUI 3?
我试图用集合中的文本框列表填充所有宽度 space。在 UWP 中添加 <UniformGrid Rows="1"/> to ItemsControl
非常简单,但使用 WinUI 3 我需要更改为 ItemsRepeater and UniformGridLayout
但 UniformGridLayout 中没有行 属性。这是我的代码:
<ItemsRepeater ItemsSource="{x:Bind ViewModel.Specimens}">
<ItemsRepeater.Layout>
<UniformGridLayout Orientation="Horizontal" ItemsStretch="Fill"/>
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate x:DataType="viewModels:SpecimenViewModel">
<TextBox Margin="10" Text="{x:Bind Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
显示的是:
预期行为:
最后,我可以检查 TextBox 是否会随着内部文本的增加而同时增加它们的大小,但我希望始终具有相同的宽度。
我想你快到了我想你只需要将 MaximumRowsOrColumns 添加到列数中,用 MinColumnSpacing="10" ItemsJustification="SpaceAround"
放置一些 space
例如:
<UniformGridLayout MinColumnSpacing="10"
ItemsJustification="SpaceAround" MaximumRowsOrColumns="2" Orientation="Horizontal" ItemsStretch="Uniform"/>
编辑:我将 ItemsStretch Fill 更改为 Uniform,不同高度内容时体验更好
我试图用集合中的文本框列表填充所有宽度 space。在 UWP 中添加 <UniformGrid Rows="1"/> to ItemsControl
非常简单,但使用 WinUI 3 我需要更改为 ItemsRepeater and UniformGridLayout
但 UniformGridLayout 中没有行 属性。这是我的代码:
<ItemsRepeater ItemsSource="{x:Bind ViewModel.Specimens}">
<ItemsRepeater.Layout>
<UniformGridLayout Orientation="Horizontal" ItemsStretch="Fill"/>
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate x:DataType="viewModels:SpecimenViewModel">
<TextBox Margin="10" Text="{x:Bind Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
显示的是:
预期行为:
最后,我可以检查 TextBox 是否会随着内部文本的增加而同时增加它们的大小,但我希望始终具有相同的宽度。
我想你快到了我想你只需要将 MaximumRowsOrColumns 添加到列数中,用 MinColumnSpacing="10" ItemsJustification="SpaceAround"
放置一些 space例如:
<UniformGridLayout MinColumnSpacing="10"
ItemsJustification="SpaceAround" MaximumRowsOrColumns="2" Orientation="Horizontal" ItemsStretch="Uniform"/>
编辑:我将 ItemsStretch Fill 更改为 Uniform,不同高度内容时体验更好