如何修复数据网格中显示的行数?

时间:2016-05-23 14:56:04

标签: wpf datagrid datagridcolumn

我想在数据网格中只显示15行并滚动以获取其余数据。意思是我有一个datagrid高度是可变的,我想要这样的东西 行高= datagrid height / 15.

2 个答案:

答案 0 :(得分:1)

创建一个Border,其中包含ScrollViewer,其中包含DataGrid。将RowHeight的{​​{1}}与DataGrid绑定到MultiBinding的{​​{1}}和ActualHeight的{​​{1}} 。要检索Border的值,请使用ColumnHeaderHeight

转换器:

DataGrid

这里是xaml:

RowHeight

IMultiValueConverter:我为测试此解决方案而创建的模拟集合。

using System; using System.Globalization; using System.Windows.Data; namespace XXX { public class HeightConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { double allHeight = (double)values[0]; double headerHeight = (double)values[1]; return (allHeight - headerHeight) / 15; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } } :你必须设置它或它将是 <Border Name="YourBorder"> <ScrollViewer> <DataGrid Name="YourGrid" ItemsSource="{Binding Items}" Padding="0" Margin="0" ColumnHeaderHeight="30"> <DataGrid.RowHeight> <MultiBinding Converter="{StaticResource HeightConverter}"> <Binding Path="ActualHeight" ElementName="YourBorder"/> <Binding Path="ColumnHeaderHeight" ElementName="YourGrid"/> </MultiBinding> </DataGrid.RowHeight> <DataGrid.Columns> <!-- YOUR COLUMNS TEMPLATES - don't put fixed height here! --> </DataGrid.Columns> </DataGrid> </ScrollViewer> </Border> 。我设置了30',因为它似乎适合普通的标题文本,但如果你有自定义标题,请自行检查。

当您拉伸窗口时,您会看到行调整大小,因此它们始终保持可见,其余的仍可通过滚动条访问。

希望这就是你要找的东西。

答案 1 :(得分:0)

我得到了一个解决方案,我在datagrid_loaded事件中添加了几行代码。

private void dataGridXX_Loaded(object sender, RoutedEventArgs e)
{
    dataGridXX.RowHeight = dataGridXX.RenderSize.Height / 15;
}