2009-09-22 81 views
0

假設我在窗口中有兩個元素。
我想要元素A來填充所有未使用的頂點空間,並且總是至少例如。 200px高度。
元素B將有幾個固定大小(擴展器),應該給它所需的空間(但爲A留下至少200px)。如果窗口中沒有足夠的可用空間,B應該可以滾動。WPF佈局謎題

這與我想要達到的要接近,但DockPanel不尊重MinHeight屬性。

<DockPanel> 
    <ScrollViewer DockPanel.Dock="Bottom"> 
    <B/> 
    </ScrollViewer> 
    <A MinHeight="200"/> 
</DockPanel> 

有什麼辦法可以使用WPF本地面板來做到這一點?

回答

2

DockPanel將始終按照其定義的順序處理面板;它不會因爲最後一個元素具有MinHeight而使對接元素變小。

我會用一個網格:

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="*" MinHeight="200" /> 
    <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <A Grid.Row="0"/> 
    <ScrollViewer Grid.Row="1"> 
    <B/> 
    </ScrollViewer> 
</Grid> 
+0

這是行不通的。它不符合原始要求「如果窗口中沒有足夠的可用空間,B應該可滾動」。當您將「高度」設置爲「自動」時,網格會提供您請求的任何尺寸。所以ScrollViewer將永遠不會有滾動條,直到你硬編碼它的高度。 – Anvaka 2009-09-22 20:13:53

+0

正如Anvaka所說,這是行不通的。 – 2009-09-22 20:35:41

+0

你是對的,第二行將在包含窗口的下方。 似乎沒有辦法說「汽車,但只有當有足夠的空間」 我想你會需要代碼來做到這一點(自定義佈局面板,或附加到一些事件處理程序和顯式設置大小) – Daniel 2009-09-22 21:20:11