gpt4 book ai didi

wpf - 与 scrollviewer 和 minWidth 结合使用时,gridsplitter 的行为不符合预期

转载 作者:行者123 更新时间:2023-12-04 16:16:23 28 4
gpt4 key购买 nike

  • 我有一个网格作为背景容器
  • 此网格包含一个滚动查看器,因此当我向上调整窗口大小时,内容会随之扩展,但是当我向下调整窗口大小时,滚动条会在我达到 sv 内容的最小宽度时出现在滚动查看器上
  • 这个滚动查看器包含一个有两列的网格
  • 此网格在每一列中包含一个滚动查看器,每个滚动查看器依次包含一个网格。
  • 我在第一列上有一个网格拆分器,以便我可以调整列的大小

免责声明:我知道这不是组织此布局的最佳方式,但这实际上是我发现的最简单的表示形式,可以重现我在更复杂的布局中遇到的问题,因此请不要提供一个可以重组层的解决方案

这是 xaml:

<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Text Project">

<!--background grid-->
<Grid>

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">

<!--two columns layout-->
<Grid MinWidth="600">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200" Background="Red"/>
</ScrollViewer>

<GridSplitter HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="6"/>

<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200" Background="Blue"/>
</ScrollViewer>
</Grid>

</ScrollViewer>

</Grid>

</Window>

目标如下:- 如果我向上调整窗口大小,一切都会缩放- 如果我缩小尺寸,当我达到 minWidth 时,最上面的滚动查看器上的滚动条就会出现,并且它的内容会停止缩小。(这部分工作正常)- 无论最上面的滚动查看器的大小如何,我都可以使用 gridsplitter 调整两列的大小- 当我达到一列的最小宽度时,滚动条出现在该列的滚动查看器上并且其内容停止缩小

问题:第二部分永远不会发生。我得到的是,我可以调整大小,直到达到两个子网格之一的最小宽度,然后 gridsplitter 停止移动,我不能进一步缩小,滚动条永远不会出现。

我注意到,如果我删除最上面的网格及其关联的滚动查看器,它会按预期工作:

<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Text Project">

<!--two columns layout-->
<Grid MinWidth="600">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200" Background="Red"/>
</ScrollViewer>

<GridSplitter HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="6"/>

<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200" Background="Blue"/>
</ScrollViewer>
</Grid>

</Window>

我不明白为什么我将内部网格放入滚动查看器这一事实会改变 gridsplitter 和内部滚动查看器的行为,所以如果有人知道解决方案,我会很高兴

最佳答案

尝试将两列 GridWidth 绑定(bind)到外部 ScrollViewerActualWidth,像这样:

<!--two columns layout-->
<Grid MinWidth="600" Width="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer}, Path=ActualWidth}">

关于wpf - 与 scrollviewer 和 minWidth 结合使用时,gridsplitter 的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359502/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com