2009-09-14 31 views
3

我有一個有7行的網格。 行0是一組的2個按鈕 第1行是一個對象的列表框 第2行是一組的3個按鈕 第3行是一組的2個按鈕 第4行是我的GridSplitter住 第5行是一組2按鈕 第6行是對象的列表框WPF GridSplitter分裂/調整兩個ListBox的?

我希望GridSplitter上下滑動,調整每個ListBox的大小。我現在生活在它自己的行裏,當我滑動它時,它會在它到達第4行(它自己的行)的頂部時凍結,並簡單地在向下擴展第4行時創建空白區域。

我只需要該分離器上下滑動並調整每個ListBox的大小。目前,如果這些ListBox的視圖太大,它們會有垂直滾動條。

有什麼想法?

回答

6

下面是一些XAML顯示如何使用GridSplitter如你所描述:

<Grid VerticalAlignment="Stretch"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="10" /> 
    <RowDefinition Height="10" /> 
    <RowDefinition Height="10" /> 
    <RowDefinition Height="10" /> 
    <RowDefinition Height="10" /> 
    <RowDefinition Height="10" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Rectangle Grid.Row="0" Fill="Red" /> 
    <Rectangle Grid.Row="1" Fill="Orange" /> 
    <Rectangle Grid.Row="2" Fill="Yellow" /> 
    <Rectangle Grid.Row="3" Fill="Green" /> 
    <Rectangle Grid.Row="4" Fill="Blue" /> 
    <Rectangle Grid.Row="5" Fill="LightBlue" /> 

    <ListBox Grid.Row="6" Background="Indigo"> 
    <ListBoxItem>Hello</ListBoxItem> 
    <ListBoxItem>World</ListBoxItem> 
    </ListBox> 

    <GridSplitter Grid.Row="7" Height="5" Background="Gray" 
       VerticalAlignment="Top" HorizontalAlignment="Stretch" /> 

    <ListBox Grid.Row="7" Background="Violet" Margin="0,5,0,0"> 
    <ListBoxItem>Hello</ListBoxItem> 
    <ListBoxItem>World</ListBoxItem> 
    </ListBox> 
</Grid> 

避免將GridSplitter在它自己的行。將它放在現有的行內,並將其設置爲頂部(或底部,如果位於上部單元格中),則水平拉伸。請注意,我已將它的高度設置爲5,然後給第二個ListBox指定5的上邊距,以便兩個元素都不隱藏另一個元素的任何部分。

希望有所幫助。

+0

我試圖與我的代碼,它似乎並沒有工作。網格分離器只是閒置,不會向上或向下移動。我有3行高度設置爲自動:一行包含元素的堆棧面板,一行包含網格,另一行包含另一個堆棧元素。任何想法,爲什麼它不會滾動? – Shafique 2009-09-16 16:17:10

+0

嗨Shafique。那麼你的GridSplitter的實現方式肯定會有所不同。嘗試複製上面的所有XAML並粘貼爲Kaxaml中Page元素的子元素。你會看到GridSplitter按預期工作。從那裏,您可以遷移XAML以更加緊密地匹配您擁有的內容並找到確切的問題。 http://www.kaxaml.com – 2009-09-17 12:50:51

+0

我在那裏看到了一些他們有VerticalAlighment =「中心」的愚蠢示例。這是行不通的。我不確定它什麼時候會,但它不適合我。使它頂部固定它。我仍然不確定它是如何工作的。我非常喜歡SplitterPanel的簡潔,但是哦... – 2009-12-11 04:23:47

0

我遇到了同樣的問題:水平的GridSplitter(在它自己的行中)無法移動,儘管我的垂直GridSplitter工作得很好。我發現加入Horizo​​ntalAlignment =「Stretch」屬性解決了我的困難。

非工作XAML:

<GridSplitter Grid.Row="2" Grid.Column="2" Height="5" ResizeDirection="Rows" VerticalAlignment="Center" /> 

工作XAML:

<GridSplitter Grid.Row="2" Grid.Column="2" Height="5" ResizeDirection="Rows" VerticalAlignment="Center" HorizontalAlignment="Stretch"/> 

我還發現,如果我跑項目,關閉了項目申請,然後放置光標在與XAML線非工作的GridSplitter(即在更改之前),GridSplitter的選擇窗口將在列的末尾顯示GridSplitter。您還可以通過將BackGround屬性更改爲某種顏色(例如「紅色」)來演示此功能。

設置Horizo​​ntalAlignment屬性就是這裏所說的(但不強調): http://msdn.microsoft.com/en-us/library/ms743457.aspx