考虑这个简单的网格:
<Grid x:Name="gridTest" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
在代码隐藏中,我添加了以下代码:
public MainWindow()
{
InitializeComponent();
Label labTest = new Label { Content = "Test Label" };
gridTest.Children.Add(labTest);
}
请注意,标签位于网格的左上角。没错,因为我没有设置Grid.Col和Grid.Row(使用Grid.SetColumn()和Grid.SetRow())
现在,检查下一个示例:
public MainWindow()
{
InitializeComponent();
Label labTest = new Label { Content = "Test Label", Height = 30, Width = 70 };
gridTest.Children.Add(labTest);
}
现在,标签就像集中在网格的第一个单元格中,尽管我没有为标签指定网格行或列! 我的问题:
答案 0 :(得分:4)
它的设计理念。事实上,标签总是集中在网格的第一个单元格中。您只是在没有给出维度的情况下看不到它,因为默认情况下它会填满整个单元格,但其内容始终保持左对齐。
使用VerticalAlignment和HorizontalAlignment属性对齐标签本身:
Label labTest = new Label
{
Content = "Test Label",
Height = 30,
Width = 70,
VerticalAlignment = VerticalAlignment.Top,
HorizontalAlignment = HorizontalAlignment.Left
};
gridTest.Children.Add(labTest);