我有一个ScrollViewer的问题,我用它来滚动包含数据网格的用户控件。如果没有滚动查看器,列会根据需要填充数据网格,但在添加滚动查看器时,列会缩小到~15px。我能够简化我的布局,仍然可以重现这种行为。
当将数据网格宽度绑定到另一个控件时,列具有它们的法线,但这与数据网格上的固定宽度具有相同的效果。 我想我不是第一个遇到这个问题的人。如何解决此问题,让我的网格将其大小调整到可用空间并为其列提供一个比例宽度?
使用scrollviewer: 没有:
<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>
答案 0 :(得分:18)
是的,我前一段时间遇到过这个问题,我采取了一种解决方法,我会在这里发布它的有用信息
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid x:Name="grid" MinWidth="200">
<DataGrid Width="{Binding ElementName=grid, Path=ActualWidth}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Column A" Width="1*"/>
<DataGridCheckBoxColumn Header="Column B" Width="1*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>
诀窍是给DataGrid
一个宽度,在这种情况下我绑定回包含元素
或者,如果您不使用HorizontalScrollBar
,则可以禁用它,这将允许ScrollViewer
计算允许DataGrid计算宽度的宽度。
答案 1 :(得分:3)
上周我经历过同样的事情。
通常,如果您有以下元素,则会出现此问题:
and Role.RoleName in('Oyuncu' ,'Senarist')
位于DataGrid
内,ScrollViewer
属性设置为HorizontalScrollBarVisibility
Auto
具有无限/未定义的宽度(例如:DataGridColumn
)
实际上,解决方案取决于您的需求:
Width="*"
在显示窗口时占用DataGridColumns
的所有可用空间(即使没有显示数据):在这种情况下, sa_ddam213 的答案可以帮助您应对。DataGrid
右边框之间留一些空格。 对于最后一个选项,您只需要为DataGrid
设置固定宽度(或者如果您不想,则不要定义它,这不是很重要,因为列可以用户可以通过双击轻松调整大小。在这种情况下,您可以在没有宽度的情况下定义DataGridColumns
。
这是一个例子:
DataGrid
通过这种方式,如果列自动调整大小后列内容在容器上运行,则会出现水平滚动条。