3

我有一个有 7 行的网格。第 0 行是一组 2 个按钮 第 1 行是一个对象列表框 第 2 行是一组 3 个按钮 第 3 行是一组 2 个按钮 第 4 行是我的 GridSplitter 所在的位置 第 5 行是一组 2 个按钮 第 6 行是对象列表框

我希望 GridSplitter 上下滑动,调整两个 ListBox 的大小。我现在让它生活在自己的行中,当我滑动它时,它会在它到达第 4 行(它自己的行)的顶部时冻结,并在向下扩展第 4 行时简单地创建空白。

我只需要该拆分器上下滑动并调整每个 ListBox 的大小。目前,如果列表框太大而无法查看,则这些列表框具有垂直滚动条。

有任何想法吗?

4

2 回答 2

6

下面是一些 XAML,展示了如何使用GridSplitter您所描述的 a:

<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 的上边距,以便两个元素都不会隐藏另一个元素的任何部分。

希望有帮助。

于 2009-09-14T23:01:55.003 回答
0

我遇到了同样的麻烦:一个水平的 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"/>

我还发现,如果我运行项目,关闭项目应用程序,然后将光标放在带有非工作 GridSplitter 的 XAML 行上(即在更改之前),则 GridSplitter 的选择窗口将在末尾显示 GridSplitter列。您还可以通过将BackGround 属性更改为一种颜色(例如“红色”)来证明这一点。

这里提到了设置 Horizo​​ntalAlignment 属性(但没有强调):http: //msdn.microsoft.com/en-us/library/ms743457.aspx

于 2011-12-13T01:33:11.817 回答