WPF TabItem网格内容消失了一半

时间:2011-10-26 00:11:37

标签: wpf xaml tabs

我有一个奇怪的问题。我有一个像这样创建的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行并在它们之间拆分标签,每行都会在每行的中间点被切断。

此问题也会在设计视图中显示,但仅限于行高或窗口最大高度等垂直限制时(因为设计视图会在我添加容器时拉伸容器以适应所有内容)。

最后,无论他们多么小,这些专栏都不会中途消失。

1 个答案:

答案 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