我有一个DataGrid
绑定到DataTable
。我希望DataGrid
总是有至少十(空)行,如果没有足够的真实数据项(数据一点一点地出现)。
用空行填充DataGrid
一种方法是在初始化时轻松地将10个空行添加到DataTable
。但是当一个真正的数据项出现时,我不能轻松添加该行,我必须找到第一个空行来覆盖它,这是不太方便的。
那么有人知道一个更聪明/内置的方式来实现这一目标?
我有一个DataGrid
绑定到DataTable
。我希望DataGrid
总是有至少十(空)行,如果没有足够的真实数据项(数据一点一点地出现)。
用空行填充DataGrid
一种方法是在初始化时轻松地将10个空行添加到DataTable
。但是当一个真正的数据项出现时,我不能轻松添加该行,我必须找到第一个空行来覆盖它,这是不太方便的。
那么有人知道一个更聪明/内置的方式来实现这一目标?
不管从哪边接近,它都会变得混乱。我会说你最好的选择(假设你的网格单元格内容不会被包装)是使用一个可视化画笔(带有线条)作为你的DataGrid的背景。
更新1 - XAML 它在那里,它的诀窍是使用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好方法,但看起来很虚假与真正的数据网格相比。此外,列线缺失。 – SpeziFish
@SpeziFish干杯,这是一个快速肮脏的方式来完成任务。 – 2011-11-24 15:18:13
如果收集的'计数'小于10,只需将空项添加到您的收藏如何? –
这就是我所说的,我总是必须检查有多少实际行,并添加或删除空行。我希望会有更聪明的或内置的方法。 – SpeziFish
为什么你需要删除行?你也不需要覆盖现有的,只是在下次计数大于10时重新绑定整个集合。 –