gpt4 book ai didi

wpf - 给 WPF Grid 一个 ScrollViewer 减去滚动条的宽度

转载 作者:行者123 更新时间:2023-12-04 14:40:25 25 4
gpt4 key购买 nike

我有一个 WPF UserControl,上面有两个网格。底部网格位于 ScrollViewer 中。这个想法是让第一个网格成为第二个网格的标题。但是,我在列的宽度方面遇到了问题。两个 Grid 都应该占据所有空间(窗口的宽度),但顶部 Grid 的宽度当然应该小一些,因为底部 Grid 的右侧有一个滚动条。

这是我得到的简化 Xaml:

<UserControl>
<DockPanel>
<Grid DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
<ScrollViewer>
<Grid>
<Grid.ColumnDefintions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefintions>
</Grid>
</ScrollViewer>
</DockPanel>
</UserControl>

这实际上渲染得很好,除了顶部网格的最右边的列延伸到滚动条上,我想避免这种情况。!

这是结果的图像: Grid column and width of scrollbar .红色表示列/单元格现在的位置,但我希望它停在蓝线处。我已经尝试过 SharedSizeGroups,但这似乎使我的网格再次变小(不占用窗口的全部空间)。

最佳答案

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Name="sv">
<Grid MinWidth="{Binding ElementName=sv, Path=ViewportWidth}" MinHeight="{Binding ElementName=sv, Path=ViewportHeight}" />
</ScrollViewer>

问题是在 ScrollViewer 容器大小和网格大小之间建立正确的依赖关系。让我们只考虑宽度:上面的绑定(bind)允许 ScrollViewer 仅在必要时公开水平滚动条:

放大网格的单个列(例如,使用拆分器)不会引起其他列的大小调整(如果您绑定(bind) Width 而不是 MinWidth 会发生这种情况)。

使用 ViewportWidth而不是 ActualWidth考虑滚动条宽度,如果有的话。

你试一试

关于wpf - 给 WPF Grid 一个 ScrollViewer 减去滚动条的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4836248/

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