使用GridSplitter作为列表框中的滑块

时间:2013-03-13 03:31:36

标签: wpf layout gridsplitter

我有一个ListBox,其内容已拉伸以填充我的窗口,在其中我有一个包含两列的网格(三个,包括GridSplitter)。

我只是希望能够像狙击手一样使用GridSplitter,能够隐藏/显示任意数量的任何一列。即100%左侧,50%左侧,或100%右侧等。

我不能为我的生活做到这一点。双方的元素都有自己想要的大小,天真的*方法不允许GridSplitter缩小到该大小以下。如果我使用固定列大小,我可以缩小到所需大小以下,但GridSplitter可以在调整Window大小时超过Window的结束宽度并且内容不再延伸到填充。

这是一个XamlPad文档,最能说明我的问题:

<ListBox HorizontalContentAlignment="Stretch">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Grid Height="20">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="5" />
          <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Border Background="Red" MinWidth="200" /> <!-- simulate fixed size content /-->
        <Border Background="Purple" Width="200" HorizontalAlignment="Left" />
        <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" Background="Gray"
                      ResizeDirection="Columns" ResizeBehavior="PreviousAndNext" />
        <Border Grid.Column="2" Background="Lime" MinWidth="200" HorizontalAlignment="Stretch" />
      </Grid>
    </DataTemplate>
  </ListBox.ItemTemplate>
  <x:Null />
</ListBox>

最奇怪的是,如果我没有ListBox,则不会出现此问题。然后它正是我想要的。

无论如何,谢谢任何人的任何帮助,我们都非常感激 - 这一直让我疯狂:)

0 个答案:

没有答案