Jay*_*Jay 13 wpf xaml scrollviewer wpfdatagrid
我有一个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>
Run Code Online (Sandbox Code Playgroud)
sa_*_*213 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>
Run Code Online (Sandbox Code Playgroud)
诀窍是给出DataGrid
一个宽度,在这种情况下,我绑定回包含元素
或者,如果您不使用HorizontalScrollBar
它,您可以禁用它,这将允许ScrollViewer
计算宽度,允许DataGrid计算宽度.
我上周经历了同样的事情。
通常,当您具有以下元素时会出现此问题:
DataGrid
具有未定义宽度的A放在 a 内ScrollViewer
,其HorizontalScrollBarVisibility
属性设置为Auto
DataGridColumn
具有无限/未定义宽度(例如:Width="*"
)
实际上,解决方案取决于您的需求:
DataGridColumns
占用所有可用空间DataGrid
(即使没有显示数据):在这种情况下,sa_ddam213的答案可以帮助您应对。DataGrid
在 Window 的第一场演出的最后一列和右边框之间留有一些空白。对于最后一个选项,您只需要为您的DataGridColumns
(或者如果您不想就不要定义它,这不是很重要,因为用户可以通过双击轻松调整列的大小) . 在这种情况下,您DataGrid
可以在没有宽度的情况下进行定义。
这是一个例子:
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid x:Name="grid" MinWidth="200">
<DataGrid>
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Column A" Width="100"/>
<DataGridCheckBoxColumn Header="Column B" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
这样,如果在列自动调整大小后列内容在容器上运行,则会出现水平滚动条。
归档时间: |
|
查看次数: |
10073 次 |
最近记录: |