【发布时间】:2015-01-07 06:44:46
【问题描述】:
我需要有关 WPF 应用程序布局的帮助。
我尝试了DockPanel、StackPanel、WrapPanel、Grid 和 UniformGrid 的不同组合。
但我似乎无法对齐所有控件的文本。我知道由于控件大小,复选框不会对齐,但第一个应该仍然对齐。
您会如何安排这些控件?
| GroupBox | GroupBox | |
| -> cbx ->tbx+lbl | TextBox+button |
| -> cbx ->tbx+lbl | ComboBox+button |
| TabControl |
我一直在尝试将所有控件的大小调整为默认高度 23,但由于我尝试使用的边距,这似乎使事情变得更糟。
<Grid x:Name="MasterGrid" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<GroupBox Header="CheckBox" Margin="5 0 0 0">
<StackPanel Margin="5">
<StackPanel.Resources>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="Margin" Value="0 5 0 0"/>
</Style>
</StackPanel.Resources>
<CheckBox Content="XXXX"/>
<CheckBox Content="XXXX"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Label + TextBox" Margin="5 0 0 0">
<StackPanel Grid.IsSharedSizeScope="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Label"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="XXXX:" Margin="0 5 0 0" Height="23"/>
<TextBox Grid.Column="1" Text="XXXX" VerticalContentAlignment="Center" Margin="0 5 5 0" Height="23"/>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Label"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="XXXX:" Margin="0 5 0 0"/>
<TextBox Grid.Column="1" Text="XXXX" VerticalContentAlignment="Center" Margin="0 5 5 0" Height="23"/>
</Grid>
</StackPanel>
</GroupBox>
<Grid VerticalAlignment="Center" Margin="0 5 0 0">
<Grid.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Height" Value="23"/>
<Setter Property="Margin" Value="5 5 0 0"/>
<Setter Property="Width" Value="75"/>
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Height" Value="23"/>
<Setter Property="Margin" Value="5 5 0 0"/>
</Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Height" Value="23"/>
<Setter Property="Margin" Value="5 5 0 0"/>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Grid.Column="0" Text="XXXXXXXXXX" VerticalContentAlignment="Center"/>
<Button Grid.Row="0" Grid.Column="1" Content="Browse"/>
<Button Grid.Row="1" Grid.Column="1" Content="Load"/>
<ComboBox Grid.Row="1" Grid.Column="0" SelectedItem="XXXXXXXXXX"/>
</Grid>
</DockPanel>
<!-- Imported Data Collection -->
<TabControl Grid.Row="1" Margin="0 5 0 5"/>
</Grid>
我已经解决了大量现有问题并尝试了每个答案(几个示例)
- Understanding Uniform Grid control
- WPF layout problem with Grid.IsSharedSizeScope and ItemsControl.ItemTemplate
- How do I layout a form in WPF using grid or other controls for maintainability
(未来问题搜索者的背景:工具用于浏览日志文件。选择文件夹路径 -> 组合框填充文件名 -> 选择要加载到 tabcontrol 的文件。两个组框包含有关如何处理不同文件的选项格式)
【问题讨论】: