gpt4 book ai didi

c# - 有没有比 Grid 或 WrapPanel 更好的方法来在表单上布置标签/值对?

转载 作者:太空狗 更新时间:2023-10-29 22:37:11 24 4
gpt4 key购买 nike

我正在寻找一种不那么麻烦的方法来在屏幕上布置键/值对(例如,标签上写着“名字”,然后是带有名字的标签)。如果它只是一个简单的分组,我会把它放在一个网格中并完成。然而,布局 2 或 3 对,然后是某种类型的分组容器,再有 4 或 5 对,然后是不同的分组容器等。

不得不做这样的事情感觉很麻烦:

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>

<Label Grid.Column="0" Grid.Row="0" Content="Element ID:" HorizontalAlignment="Right" />
<Label Grid.Column="1" Grid.Row="0" Content="{Binding Path=ElementId}" HorizontalAlignment="Left" FontWeight="Bold" />

<Label Grid.Column="0" Grid.Row="1" Content="Element Description:" HorizontalAlignment="Right" />
<Label Grid.Column="1" Grid.Row="1" Content="{Binding Path=ElementDescription}" HorizontalAlignment="Left" FontWeight="Bold" />
</Grid>

只是为了渲染:

_______元素 ID:ABC123

元素描述:漂亮!

当您有多个这样的部分时尤其如此。

UniformGrid 不会让您固定一列以便 Label 可以右对齐。我尝试了 StackPanel 和 WrapPanel 的组合,但你最终会得到几乎一样多的开销和大量的边际调整。

有更好的方法吗?

最佳答案

据我所知,你应该能够做这样的事情,当你有大量的时候,这会非常方便;

<UniformGrid Columns="2">

<UniformGrid.Resources>

<!-- Set your properties once, in one place,
and control your children like a good parent. -->

<Style TargetType="Label">
<Setter Property="HorizontalAlignment" Value="Right"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="FontWeight" Value="Bold"/>
<!-- If you want to control your cell width so the descriptions doesn't
offset the size of the ID's you could just enable/edit these setters.
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="MaxWidth" Value="150"/>
-->
</Style>

</UniformGrid.Resources>

<Label Content="Element ID:"/>
<TextBlock Text="{Binding Path=ElementId}"/>

<Label Content="Element Description:"/>
<TextBlock Text="{Binding Path=ElementDescription}"/>

<!-- etc, etc, etc. -->

</UniformGrid>

PS - 避免使用 Label 并使用 TextBlock 除非它实际上是有益的,因为 Label 比 TextBlock 更重。

希望这有帮助,干杯。

关于c# - 有没有比 Grid 或 WrapPanel 更好的方法来在表单上布置标签/值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com