wpf网格最佳实践

时间:2016-07-05 17:23:22

标签: wpf grid

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

最佳做法是什么: 1.将组合框和标签放在堆叠面板中,然后放置一个单元格2.只需将两个控件直接放在网格单元格中

这两种方法有哪些优点和缺点?

谢谢

1 个答案:

答案 0 :(得分:4)

将两个控件放在同一个单元格中的缺点是第二个控件将叠加在第一个控件上(如果你尝试过,你会注意到它),唯一的解决方法是通过给他们奇怪的边距或将它们都放在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

这使您可以轻松更改所有标签/控制对的格式。我通常只是在WrapPanelGrid我自己拍一些这些东西,但如果TemplateBinding对你的布局有意义,那么一定要用它。

这种风格的模板可能并且可以说应该是undefined method `new_record?' for #<Domain::ActiveRecord_Relation:0x007f320ed8af80> 比它更多的东西,但是我厌倦了打字,而且它实际上我将会使用它。