gpt4 book ai didi

wpf 网格最佳实践

转载 作者:行者123 更新时间:2023-12-01 12:27:09 25 4
gpt4 key购买 nike

我有一个包含许多标签、组合框和文本框的网格。我在每个单元格中都放置了标签和组合框。

什么是最佳实践:1.把Combo Box和label放在一个stack panel里然后放在一个cell里 2.干脆把两个控件直接放在一个grid cell里

这两种方法的优点和缺点是什么?

谢谢

最佳答案

将两个控件放在同一个单元格中的缺点是第二个控件将叠加在第一个控件之上(如果您尝试过,您会注意到这一点),唯一的解决方法是通过给它们奇怪的边距或将它们都放在 StackPanel 中,这就是为什么每个人都只是将它们放在 StackPanel 中。

我建议这样:定义一个如下所示的样式,并将它放在 App.xaml 中包含的一些全局事物中(或者在 App.xaml 本身中,如果你处于海盗心态):

<Style x:Key="FieldStyle" TargetType="HeaderedContentControl">
<Setter Property="Margin" Value="8,3" />
<Setter Property="MinWidth" Value="300" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HeaderedContentControl">
<StackPanel Orientation="Vertical">
<Label
FontWeight="Bold"
Content="{TemplateBinding Header}"
/>
<ContentPresenter
Margin="8,0,0,0"
/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

然后像这样使用它:

<HeaderedContentControl 
Header="Contact Name"
Grid.Row="0"
Grid.Column="0"
Style="{StaticResource FieldStyle}"
>
<TextBox Text="{Binding ContactName}" />
</HeaderedContentControl>

<HeaderedContentControl
Header="Contact Phone"
Grid.Row="1"
Grid.Column="0"
Style="{StaticResource FieldStyle}"
>
<TextBox Text="{Binding ContactPhone}" />
</HeaderedContentControl>

这使您可以轻松更改所有标签/控件对的格式。我自己通常只是在 StackPanelWrapPanel 中把这些东西弄得一团糟,但是如果 Grid 对您的布局有意义,通过尽一切办法去吧。

那种风格的模板可以而且可以说应该是 TemplateBinding 比它更多的东西,但我厌倦了打字,它已经有了我实际要使用的所有东西。

关于wpf 网格最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209202/

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