2011-11-01 31 views
2

我似乎永遠無法圍繞DockPanel,StackPanel和Grid之間在限制其子內容方面的差異。此XAML:將面板中的子控件的大小限制在可見區域

<DockPanel> 
     <Menu/> 
     <ToolBarTray/> 
     <ScrollViewer> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition/> 
      </Grid.RowDefinitions> 
     <TabControl> 
     <TabItem Header="Data" Name="tabData"> 
       <DockPanel> 
        <Border Name="extraDataBorder" DockPanel.Dock="Top" 
          Style="{StaticResource ConsistentBorder}" Margin="10">          
        </Border> 
        <igDP:XamDataGrid Grid.Row="1"                  
          Margin="10,10,10,0"                    
          ScrollViewer.HorizontalScrollBarVisibility="Visible" 
          ScrollViewer.VerticalScrollBarVisibility="Visible" >      

        </igDP:XamDataGrid> 
       </DockPanel> 
      </TabItem> 
     </TabControl> 
     </Grid>                        

     </ScrollViewer> 

    </DockPanel> 

可生產如下圖所示的數字是不是屏幕的可視區域內限制的網格:

Overflowing grid

我不想讓網格程度超越屏幕的可見區域。相反,我希望它被剪切,以便用戶可以看到水平滾動條,而不必向下滾動以查看水平滾動條。我曾嘗試使用堆棧和DockPanel代替網格,但獲得完全相同的效果。我該如何解決?

TIA。

編輯: 我正在編輯原始XAML以包含導致此問題的其他元素。

+2

什麼是最外面的DockPanel內?我問,因爲從屏幕截圖看,它看起來像是選項卡控件正在低於你希望視覺效果停止的位置。這似乎表明,最外面的DockPanel或其祖先之一是在允許它更高的東西內。通常問題是將元素放入StackPanel(或RowDefinition具有自動高度的網格)中,這基本上意味着元素的高度是無限的,因此根據內容的大小來測量大小。 – AndrewS

+0

最外面的DockPanel位於UserControl內。 –

+0

對不起,但仍然沒有回答,因爲用戶控件必須在東西內託管。如果沒有清晰的元素層次結構圖,我無法真正幫助你。在你的圖像中,你有一個指向某個元素的箭頭 - 選項卡控件和該元素之間的元素樹關係是什麼? – AndrewS

回答

1

作爲衆多解決方案之一,您可以將其綁定到其父寬度和高度。

相關問題