我有一个有7行的网格。 第0行是一组2个按钮 第1行是对象的ListBox 第2行是一组3个按钮 第3行是一组2个按钮 第4行是我的GridSplitter所在的地方 第5行是一组2个按钮 第6行是对象的ListBox
我想让GridSplitter上下滑动,调整两个ListBox中的每一个的大小。我现在已经把它放在自己的行中了,当我滑动它时,当它到达第4行(它自己的行)的顶部时它会冻结,并且只是在它向下扩展第4行时创建空白区域。
我只需要拆分器上下滑动并调整每个ListBox的大小。目前,如果列表框的视图太大,那么它们会有垂直滚动条。
任何想法?
答案 0 :(得分: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,这样两个元素都不会隐藏另一个元素的任何部分。
希望有所帮助。
答案 1 :(得分:0)
我遇到了同样的麻烦:一个水平的GridSplitter(在它自己的行中)无法移动,虽然我的垂直一个工作得很好。我发现添加HorizontalAlignment =“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 at专栏的结尾。您还可以通过将BackGround属性更改为颜色(例如“红色”)来证明这一点。
此处提到设置HorizontalAlignment属性(但不强调): http://msdn.microsoft.com/en-us/library/ms743457.aspx