WPF DataGrid HeaderTemplate神秘填充

我在DataGrid的列标题中放置了一个带有图像的按钮。 单元格模板也只是一个带图像的简单按钮。

            

渲染时,标题在右侧仅有大约10-15px的填充,这使得单元格明显地呈现在该宽度处,使得单元格按钮在两侧都具有空白空间。 作为一个像素完美主义者,这让我感到很难过。 我最初认为它是排序时显示的箭头的空间,但我在整个DataGrid和列上显式禁用排序。

这是一张图片: http : //img716.imageshack.us/img716/1787/68487749.png

我假设这是来自按钮的父元素的填充。 有谁知道消除它的方法?


看到:

  • http://sofzh.miximages.com/c%23//
  • http://sofzh.miximages.com/c%23//

解:

                     

窥探救援!

既然您更新了问题,我在DataGridHeaderBorder.cs中找到了一个有趣的代码:

  protected override Size ArrangeOverride(Size arrangeSize) { //... if (padding.Equals(new Thickness())) { padding = DefaultPadding; } //... child.Arrange(new Rect(padding.Left, padding.Top, childWidth, childHeight)); } 

DefaultPadding不为0的地方……即使他们不使用标准的填充,他们也会安排孩子稍微移动。

如何解决这个问题? 也许为表头创建自己的模板就可以了。 或者您可以尝试图像的负边距。 不喜欢这种方法。 但我找不到更好的东西了。

使用Padding =“0,0.000001,0,0”似乎绕着它们的检查代码行走(至少在.NET 4.0中)。