我有一個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時重新綁定整個集合。 –