我有一个奇怪的问题。我有一个像这样创建的TabControl:
<TabControl HorizontalAlignment="Stretch" Name="tabControl" VerticalAlignment="Stretch" FontSize="10">
...
</TanControl>
创建了一些标签,如下所示:
<TabItem Header="XXXX" Name="tab1">
...
</TabItem>
在每个标签内我都有一个网格,按照工具箱拖放生成的代码,我开始向第一个控件添加数据,如下所示:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="XXXX:" Margin="1,6" Height="28" HorizontalAlignment="Right" Name="label001" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,34" Height="28" HorizontalAlignment="Right" Name="label002" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,62" Height="28" HorizontalAlignment="Right" Name="label003" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,90" Height="28" HorizontalAlignment="Right" Name="label004" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,130" Height="28" HorizontalAlignment="Right" Name="label005" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,158" Height="28" HorizontalAlignment="Right" Name="label006" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,186" Height="28" HorizontalAlignment="Right" Name="label007" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,226" Height="28" HorizontalAlignment="Right" Name="label008" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,254" Height="28" HorizontalAlignment="Right" Name="label009" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="1" Content="XXXX" Margin="1,254" Height="28" HorizontalAlignment="Left" Name="lbl1" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="0" Content="XXXX:" Margin="1,282" Height="28" HorizontalAlignment="Right" Name="label010" VerticalAlignment="Top" FontSize="12" />
<Label Grid.Column="1" Content="XXXX" Margin="1,282" Height="28" HorizontalAlignment="Left" Name="lbl2" VerticalAlignment="Top" FontSize="12" />
</Grid>
问题是,在将标签放置在比网格中间更远的位置之后,它会消失。如果我将窗口调整为更大,我可以看到更多的项目,因为它们已经不再中途了,如果我将它缩小,那么因为它们通过中途点而更加消失。
我尝试在网格中添加行,但它们仍然消失!奇怪的是,如果我添加n行并在它们之间拆分标签,每行都会在每行的中间点被切断。
此问题也会在设计视图中显示,但仅限于行高或窗口最大高度等垂直限制时(因为设计视图会在我添加容器时拉伸容器以适应所有内容)。
最后,无论他们多么小,这些专栏都不会中途消失。
答案 0 :(得分:2)
Margin =“20,50”将被解释为厚度 左,右设置为20,顶部和底部设置为50. From MSDN
因此,最后一个标签的边距“1,282”与“1,282,1,282”(左,上,右,下)相同。解决问题的简单方法是将每个标签的边距修改为“X,X,1,0”。
您正在使用Margin来控制每个控件的位置,但我建议您使用WPF的Layout Controls的附加属性来控制位置。例如,对于Gird,有Gird.Row和Grid.Column,对于DockPannel,有Dock.Top和Dock.Left等。对于这个问题,请参考Use Automatic Layout Overview。