2
我有一个网格,其中包含许多标签,组合框和文本框。 我在每个单元格中都放置了标签和组合框。wpf Grid最佳实践
什么是最好的做法: 1.将组合框和一个堆叠面板的标签,然后把它放在一个单元2简单地说这两个控件直接在网格单元
有哪些优势和两种方法的缺点?
谢谢
我有一个网格,其中包含许多标签,组合框和文本框。 我在每个单元格中都放置了标签和组合框。wpf Grid最佳实践
什么是最好的做法: 1.将组合框和一个堆叠面板的标签,然后把它放在一个单元2简单地说这两个控件直接在网格单元
有哪些优势和两种方法的缺点?
谢谢
在同一小区内将两者一起控制的缺点是,第二个将在第一(你会注意到,如果你尝试过)之上进行叠加,并解决这个问题的唯一方法就是给予他们奇异的利润或者将他们都放在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>
这可以让您轻松地更改所有标签/控件对的格式。我通常只是在我自己的StackPanel
或WrapPanel
这些东西一巴掌,但如果一个Grid
是有意义的布局,通过一切手段去与它。
该风格的模板可以和可以证明应该是TemplateBinding
比它更多的东西,但我厌倦了打字,它已经得到了我实际上要使用的所有东西。