将窗口的高度绑定到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并隐藏一个网格时。行,主窗口也将拉起并隐藏额外的空白。
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>