【问题标题】:Strange Issues with datagrid in wpfwpf中数据网格的奇怪问题
【发布时间】:2011-10-25 06:36:59
【问题描述】:

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

我必须创建一个数据网格,其中只有列应该有可见的边框。

我的意思是它应该看起来像这样:

 ____________________
 | col1 | col2| col3|
 |______|_____|_____|
 |   r1 |  r1 |  r1 |
 |   r3 |  r2 |  r2 |
 |      |     |     |
 |      |     |     |
 |      |     |     |
 |      |     |     |
 |______|_____|_____|

我可以在底部绘制一个没有边框的网格,但问题在于如果数据网格中只有一行,则列边框不会下降到数据网格的外边框我的意思是如果只有一行我的数据网格看起来如何:

  ____________________
 | col1 | col2| col3|
 |______|_____|_____|
 |   r1 |  r1 |  r1 |
 |   r3 |  r2 |  r2 |
 |______|_____|_____|
 |                  |
 |                  |
 |                  |
 |__________________|

这很容易理解,因为只有一行,但我想要的是无论行数如何,都应该有线条触及数据网格的底部边框,有什么简单的方法吗??

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

【问题讨论】:

    标签: c# .net wpf wpfdatagrid


    【解决方案1】:

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

    height = DataGridHeight - Height of all rows except last one

    您可能还需要减去 DataGridHeaderHeight 等值。

    关于您的第二个问题..您是否尝试在 DataGrid 的加载事件中将 DataGrid 的 SelectedIndex 设置为 0?

    【讨论】:

    • 它可能会起作用,但它不会违反 MVVM 模式,因为我们正在从代码后面控制视觉表示吗??....而且当行数超过数据网格高度的可视区域,即当数据网格中有滚动条时..还有其他想法吗??
    • 首先,它不反对 MVVM,因为我们只是在后面的代码中使用视觉元素,我们没有做任何与数据或业务逻辑相关的事情。对于第二个问题,你可以检查滚动条是否存在,它存在你不需要应用这个条件
    • 感谢您清除我对 MVVM 的疑虑,但关于滚动条是否存在并且我不应用条件,一旦用户向下滚动,它仍然是同样的问题......而且还有一点不会如果用户在最后一行插入数据,它看起来很奇怪??...
    • 一旦你滚动,这是否意味着最后一行已经在 DataGrid 的末尾了?在这种情况下您需要任何解决方案吗?
    • 嗯,是的,我想你是对的很多......关于第二个是的,我已经做到了,问题是尽管它使我的第一行选择的焦点仍然在数据网格之外/上,一旦加载数据网格,我想要的第一行不仅应该被选中,它还应该有键盘和逻辑焦点......这样用户就可以在不按任何键或使用鼠标的情况下开始编辑......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2011-07-06
    • 1970-01-01
    • 2022-11-19
    • 2012-06-15
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多