将窗口的高度绑定到gridsplitter(视图框内)的移动

本文关键字:视图 移动 gridsplitter 窗口 高度 绑定 | 更新日期: 2023-09-27 18:16:39

基本上我有一个这样嵌套的应用程序。假设这是一个简单的布局,我在每一行之间有更多的行和网格分割器。

<Window>
  <Viewbox>
    <Grid>
      <Grid.RowDefinition>
      <RowDefinition Height = 100/>
      <RowDefinition Height = 100/>
      </Grid.RowDefinition>
      <Gridsplitter Grid.Row =0/>
    </Grid>
  </Viewbox>
</Window>

viewbox是为用户调整窗口大小,并有应用程序增长或缩小取决于他们的偏好。我还添加了一个gridsplitter来调整网格的行大小,以便它们可以减少不必要的选项卡。然而,viewbox/window的大小保持不变,使得gridsplitter的功能毫无意义。当gridsplitter被移动时,viewbox/window是否有办法相应地调整 ?当我打开gridsplitter并隐藏一个网格时。行,主窗口也将拉起并隐藏额外的空白。

将窗口的高度绑定到gridsplitter(视图框内)的移动

viewbox可能很笨拙;它们内部的内容不会像您期望的那样伸展,比如在网格中。ViewBox的存在是为了获取具有绝对值的元素(即height=10, width=10)并允许其调整大小。

试试我对你的代码所做的如下修改:

 <Viewbox Stretch="Uniform">
        <Grid Width="1280" Height="720">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Rectangle Fill="Red" />
            <Rectangle Grid.Row="1" Fill="Green" />
            <GridSplitter Width="100"
                          Height="20" Margin="0,0,0,-10"
                          HorizontalAlignment="Center"
                          VerticalAlignment="Bottom"
                          Cursor="SizeNS"
                          ResizeDirection="Rows" />
        </Grid>
    </Viewbox>

这两行现在可以通过拖动灰色的GridSplitter来调整大小,当您以统一的方式调整窗口大小时,整个网格也会调整大小。

另一个问题是你给你的两个行绝对大小(都是100px) -其中至少一个需要是height="*"(默认为行定义),以使这看起来不奇怪。

你试过了吗

<Window SizeToContent="WidthAndHeight" />  
    <Viewbox HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
        ...
    </Viewbox>
</Window>