7

我在表单中使用 DataGrid 来显示(用户 ID、姓名、余额等)列表。它有一个非常奇怪的问题,在某些行的开头(每 20 行中的一行)有一个小的空白区域导致该行未对齐。空白区域就像一个小矩形,位于行的第一个单元格之前。我回顾了我的风格和一切,但无法弄清楚为什么会这样。仅当我以编程方式滚动 DataGrid 时才会发生这种情况,滚动完成后会出现空白。

更糟糕的是,空白区域可以调整大小!当我用鼠标调整它的大小时,它会搞砸网格。我真的不想把这样的东西寄出去。

我在 WPF 方面没有太多经验,如果有人能给我一些关于在哪里看的想法,我将不胜感激。谢谢。


编辑:这是屏幕截图:

在此处输入图像描述

4

2 回答 2

9

此问题是由某些随机行的“显示”行标题引起的。

我不知道为什么会这样,但幸运的是修复很简单。

如果RowHeaderWidth="0"在 DataGrid 上设置,则行为应该与预期一致。

由于某种原因,即使HeadersVisibility设置为列,行标题仍然出现。

于 2012-11-19T19:02:01.973 回答
0

我在多个项目中都遇到过同样的问题,据我所知,这只是一个普通的 ole 错误。这是蹩脚的。我发现的唯一工作是la脚。就像超级,超级跛脚。我希望我有更好的东西,但我没有。无论如何,我发现当我调整网格大小时,这些奇怪的滚动伪影会消失,所以我编写了一些代码来触发引擎更新布局。

Timer _timer;

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    _timer = new Timer(1000);
    _timer.Elapsed += _timer_Elapsed;
    _timer.Start();
}

void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
    //why the hell are we doing this?
    //well, the stupid error adorners on the grid like to be mis-aligned
    //forcing a layout to happen makes them not look off. lame, I know.
    Dispatcher.Invoke(new Action(() =>
    {
        MainDataGrid.Margin = new Thickness(MainDataGrid.Margin.Left, MainDataGrid.Margin.Top, MainDataGrid.Margin.Right, MainDataGrid.Margin.Bottom + 1);
        MainDataGrid.UpdateLayout();

        MainDataGrid.Margin = new Thickness(MainDataGrid.Margin.Left, MainDataGrid.Margin.Top, MainDataGrid.Margin.Right, MainDataGrid.Margin.Bottom - 1);
        MainDataGrid.UpdateLayout();
    }));


}
于 2012-11-19T18:47:03.577 回答