C# wpf中datagrid的奇怪问题

C# wpf中datagrid的奇怪问题,c#,.net,wpf,wpfdatagrid,C#,.net,Wpf,Wpfdatagrid,我是wpf的新手,正在开发一个会计应用程序。我的问题很简单,但我很惊讶,我找不到一个简单的解决方案,它是这样的: 我必须创建一个datagrid,其中只有列应该有可见的边框 我的意思是它应该是这样的: ____________________ | col1 | col2| col3| |______|_____|_____| | r1 | r1 | r1 | | r3 | r2 | r2 | | | | | | | |

我是wpf的新手,正在开发一个会计应用程序。我的问题很简单,但我很惊讶,我找不到一个简单的解决方案,它是这样的:

我必须创建一个datagrid,其中只有列应该有可见的边框

我的意思是它应该是这样的:

 ____________________
 | col1 | col2| col3|
 |______|_____|_____|
 |   r1 |  r1 |  r1 |
 |   r3 |  r2 |  r2 |
 |      |     |     |
 |      |     |     |
 |      |     |     |
 |      |     |     |
 |______|_____|_____|
我可以画一个底部没有边框的网格,但问题是,如果datagrid中只有一行,列边框将不会向下,直到datagrid的外部边框,我的意思是,如果只有一行,我的datagrid看起来就是这样:

  ____________________
 | col1 | col2| col3|
 |______|_____|_____|
 |   r1 |  r1 |  r1 |
 |   r3 |  r2 |  r2 |
 |______|_____|_____|
 |                  |
 |                  |
 |                  |
 |__________________|
这很容易理解,因为只有一行,但我想要的是,不管行数多少,都应该有线接触到datagrid的底部边界,有没有简单的方法来实现这一点


还有一个问题是,我希望在加载表单时选择并聚焦第一行,但无论我多么努力…它仍然没有解决…

一种方法是使用post获取DataGrid的最后一行,并将其高度设置为

height=DataGridHeight—除最后一行之外的所有行的高度

您可能还需要减去像DataGridHeaderHeight这样的值


关于你的第二个问题。。您是否尝试过在DataGrid的loaded event内将SelectedIndex of DataGrid设置为0?

它可能会起作用,但不会违反MVVM模式,因为我们正在从代码隐藏处控制可视化表示…。而且当行数超过DataGrid高度的可视区域时,它也会失败,也就是说,当datagrid中有一个滚动条时,还有其他想法吗?首先,没有,它不反对MVVM,因为我们只是在代码中玩视觉元素,我们没有做任何与数据或业务逻辑相关的事情。对于第二个问题,您可以检查滚动条是否存在,它是否存在您不需要应用此条件感谢您消除了我对MVVM的疑虑,但如果滚动条存在,我不应用此条件,当用户向下滚动时,问题仍然是一样的……如果用户在最后一行插入数据,那么还有一点看起来不是很严重吗???当您滚动时,这不意味着最后一行已经在数据网格的末尾了吗?在这种情况下,你需要什么解决方案吗?嗯,是的,我想你是对的,thanx很多…..关于第二个问题,是的,我已经做了,问题是尽管它使我的第一行选择的焦点仍然在数据网格之外/上,我想要的是,一旦加载datagrid,第一行不仅应该被选中,还应该有键盘和逻辑焦点…这样用户就可以开始编辑,而无需按ny键或使用鼠标。。。。