使用空行填充DataGrid

时间:2011-11-24 09:27:24

标签: wpf datagrid

我有DataGrid绑定到DataTable。我希望DataGrid总是至少有十(空)行,如果没有足够的实际数据项(数据一点一点地进入)。
Example

一种方法是在初始化时轻松地向DataTable添加十个空行。但是当一个真实的数据项出现时,我无法轻松添加该行,我必须找到第一个空行来覆盖它,这不是很方便。
那么有人知道更聪明/内置的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

无论从何方接近它都会变得一团糟。我会说你最好的选择(如果您的网格单元格内容不会被包裹)是使用可视化画笔(带有线条)作为您的DataGrid的背景。

更新1 - XAML 它是alwast那里,诀窍是使用MinHeight,由于平铺背景,它将产生空白物品的视觉。如果您的网格将填充真实数据,背景将展开,渲染更多行。

我没有尝试的一件事是它如何处理滚动。

以下是一个例子:

<Grid>
    <Grid.Resources>
        <VisualBrush x:Key="StripesBrush" TileMode="Tile" Viewport="0,0,5,20"
               Viewbox="0,0,10,10" ViewportUnits="Absolute" 
               ViewboxUnits="Absolute">
            <VisualBrush.Visual>
                <Line X1="0" X2="10000" Y1="0" Y2="0" Stroke="DarkGray"/>
            </VisualBrush.Visual>
        </VisualBrush>
    </Grid.Resources>
    <DataGrid x:Name="g" AutoGenerateColumns="False" 
              GridLinesVisibility="None" 
              MinHeight="100"
              Height="100"
              VerticalAlignment="Top"
              Background="{StaticResource StripesBrush}">

        <DataGrid.Columns>
            <DataGridTextColumn Header="A" Width="Auto" Binding="{Binding Item1}">
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" Value="Transparent"></Setter>
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>
            <DataGridTextColumn Header="B" Width="Auto" Binding="{Binding Item2}" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>

答案 1 :(得分:0)

如果仅用于布局,您只需在实际数据网格下添加第二个数据网格,其中包含10个空行。或者你采取Dmitry贴出的方式并使用视觉刷