2011-10-26 53 views
0

我有一個奇怪的問題。我有一個TabControl創建像這樣:WPF TabItem Grid內容消失半路向下

<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行並在它們之間分開標籤,則每行的中間點都會切斷每行。

這個問題也顯示在設計視圖中,但只有一個垂直加限制像行高或窗口最大高度(因爲設計視圖伸展的容器,我將它們添加到適用於所有的內容)。

最後,列從未中途消失,不管他們多麼小弄。

回答

2

保證金=「20,50」將被解釋爲是指厚度 有左,右設置爲20,以及頂部和底部設置爲50 From MSDN

因此,保證金「1282 「的最後一個標籤與」1,282,1,282「(左,上,右,下)相同。解決問題的簡單方法是將每個標籤的邊距修改爲「X,X,1,0」。

您正在使用保證金來控制每個控件的位置,但我建議你使用WPF的佈局控件的附加屬性來控制的位置。例如,Gird有Gird.Row和Grid.Column,DockPannel有Dock.Top和Dock.Left等。對於這個問題,請參考Use Automatic Layout Overview

+0

好的,將左邊距和上邊距重新添加到標籤中可以解決問題。根據我所收集的信息,當您設置Margin =「i,j」時,i是Horizo​​ntalAlignment的邊距,j是VerticalAlignment的邊距。我的元素的立場反映了這一點。我會理解,如果我的立場是錯誤的,但由於他們是對的,我不明白什麼會使他們消失。我會接受你的回答,因爲它解決了我的問題,但我想知道更多。 – CuddleBunny

+0

如果將標籤邊距設置爲1,282,與1,282,1,282相同且主窗口高度小於282 * 2,則標籤將不會顯示,因爲沒有足夠的空間。您可以將邊距設置爲1,282,1,0以顯示具有正確位置的標籤。我建議你設置標籤的背景來標識標籤的區域,比如'

+0

好吧,更有意義,謝謝! – CuddleBunny