datagrid的显示问题,急!

wyumening 2012-03-29 10:52:34
现在做的datagrid中已经能够显示横向的和纵向的分割线了,如图所示
如果看不到图的话,请到我的个人空间去看,在我的相册中,那张名为问题.jpg的图片就是了

现在的问题是数据库中总共只有四条数据,所以没有完全填充DataGrid,在没有记录可显示的地方就不会出现横向和纵向的网格线了, 怎么能在空白的行中也显示横向和纵向的网格线呢?代码如下:

<StackPanel>
<sdk:DataGrid AutoGenerateColumns="False" HorizontalAlignment="Center" Width="600" Margin="21,7,29,200" x:Name="DataGrid1" LoadingRow="DataGrid1_LoadingRow" Height="250" ColumnWidth="150" GridLinesVisibility="All" HorizontalScrollBarVisibility="Hidden">

<sdk:DataGrid.Columns>


<sdk:DataGridTextColumn Header="用户名" Width="150" Binding="{Binding UserName}" HeaderStyle="{StaticResource DataGrid_Header_Center}" >
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="性别" Width="150" Binding="{Binding UserSex}" HeaderStyle="{StaticResource DataGrid_Header_Center}" >

</sdk:DataGridTextColumn>
<sdk:DataGridTemplateColumn Header="修改" Width="150" HeaderStyle="{StaticResource DataGrid_Header_Center}" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="修改" Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" x:Name="UpdateBtn" VerticalAlignment="Top" Width="100" Click="UpdateBtn_Click" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn Header="删除" Width="150" HeaderStyle="{StaticResource DataGrid_Header_Center}" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="删除" Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" x:Name="DeleteBtn" VerticalAlignment="Top" Width="100" Click="DeleteBtn_Click" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>


</sdk:DataGrid.Columns>

</sdk:DataGrid>
</StackPanel>
<StackPanel Width="600" Orientation="Horizontal" Height="250">
<Button Content="添加记录" Height="23" Margin="30,15,0,0" Name="button1" Click="button1_Click" Width="50" />
<Button Content="按输入条件查询" Height="23" HorizontalAlignment="Left" Margin="30,15,0,0" Name="button2" Click="button2_Click" Width="90" />
<TextBlock Height="23" HorizontalAlignment="Left" Margin="20,15,0,0" Name="textBlock1" Text="用户名:" Width="50" />
<TextBox Height="23" Margin="5,15,0,0" Name="txtName" Width="50" />
<TextBlock Height="23" Margin="10,15,0,0" Name="textBlock2" Text="性别:" Width="50" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="10,15,0,0" Name="txtSex" Width="50" />
<Button Content="刷新" Height="23" Name="button3" Width="60" Margin="50,15,0,0" Click="button3_Click" />
</StackPanel>

大家帮帮忙吧,多谢了!
...全文
142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyumening 2012-04-05
  • 打赏
  • 举报
回复
最后还是更改了需求了事,还是谢谢大家的回答!
sundayX 2012-03-29
  • 打赏
  • 举报
回复
可以在datagrid的后面加一层canvas,然后根据datagrid的行高和列宽,画一些线,来近似代替那种效果。
横线比较好画,只需要计算行高就可以。
关键是竖线要在datagrid的列宽改变时重画(不过可禁止用户可以调整列宽,使用固定列宽),还要在出现横向滚动时,也能重画。

最简单的方法是说服用户接受目前呈现效果或者查找一些第三方的控件库。
wyumening 2012-03-29
  • 打赏
  • 举报
回复
那按照第一种方式应该怎么做?
sundayX 2012-03-29
  • 打赏
  • 举报
回复
这用户的要求也太苛刻了。
DataGrid本身没这功能,其中的行是根据数据源产生的,行和列对应的单元格可以呈现分隔线。要是没有数据,也就是没有行呈现,是不会出现分割线的。

1、一种方式是把DataGrid背景设为透明的,然后在DataGrid后面自己根据行和列的大小画线。
2、另一种方式是在数据源中填充没有数据的空行,但不好控制,用户更改窗口大小时,得需要调整插入空行的多少。
3、有些第三方控件的DataGrid可能有类似效果实现。
lrl1286219215 2012-03-29
  • 打赏
  • 举报
回复
你把你datagrid 的高去掉试试~~~
wwwljh 2012-03-29
  • 打赏
  • 举报
回复
相对来说感觉插入空白行更好实现一些。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧