我在使用ScrollViewer滚动包含数据网格的用户控件时遇到问题。如果没有滚动查看器,列将按照我的要求填充数据网格,但添加滚动查看器后,列将缩小到~ 15 px。我能够简化布局,并且仍然可以重现此行为。
将数据网格宽度绑定到另一个控件时,列具有正常的宽度,但这与数据网格上的固定宽度具有相同的效果。我想我不是第一个遇到此问题的人。如何解决此问题,使网格根据可用空间调整其大小,并给予列提供成比例的宽度?
使用滚动查看器:x1c 0d1x和不带:
<Window x:Class="GridTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200">
<DataGrid Margin="0" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Column A" Width="*"/>
<DataGridCheckBoxColumn Header="Column B" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>
3条答案
按热度按时间7bsow1i61#
是的,我有这个问题前一段时间,我采取了变通办法,我会张贴在这里,以防万一它有用
技巧是给予
DataGrid
一个宽度,在本例中,我绑定回包含的元素或者,如果不使用
HorizontalScrollBar
,则可以禁用它,这将允许ScrollViewer
计算宽度,从而允许DataGrid计算宽度。wydwbb8l2#
上周我也经历了同样的事情。
通常,当您具有下列元素时会发生此问题:
1.未定义宽度的
DataGrid
,放置在HorizontalScrollBarVisibility
属性设置为Auto
的ScrollViewer
内1.至少有一个
DataGridColumn
具有无限/未定义的宽度(例如:(一个月五个月一次)实际上,解决方案取决于您的需求:
DataGridColumns
占用DataGrid
的所有可用空间:在这种情况下,sa_ddam213的回答可以帮助您应对。DataGrid
右边框之间有一些空格。对于最后一个选项,您只需要为
DataGridColumns
设置固定的宽度(或者如果您不想定义它,就不定义它,这并不重要,因为用户可以通过双击轻松地调整列的大小)。在这种情况下,您可以定义DataGrid
而不定义宽度。以下是一个示例:
通过这种方式,如果列内容在列自动调整大小后溢出容器,则会出现一个水平滚动条。
vfh0ocws3#
解决方案防止了mardok提到的问题。
1.将容器面板的宽度绑定到ScrollViewer的ViewportWidth
1.设置容器面板的MinWidth。