2010-01-11 203 views
0

我们有一个相当复杂的WPF应用程序(我无法在这里展示),它以某种方式让平铺的背景与其用户控件之一错位。我无法在一个“干净”的WPF项目重现此问题,但会尽量说明在这张照片的问题:WPF平铺背景错位

WPF Background Tile Misalignment http://kintespace.com/bitmaps/blog_wpf_tile_misalignment.jpg

灰色区域代表用户控制和黑红检查代表平铺背景里面有用户控件。白色背景代表托管控件的窗口。这里使用VisualBrush,但DrawingBrush也出现了同样的问题。我宁愿而不是来使用ImageBrush

你可以打开一个“干净的”WPF项目,并建立一些东西,会导致瓷砖背景像这样错位?

+0

检查图像的DPI。 WPF默认为96 DPI。 – 2010-08-24 05:45:52

回答

0

如果用户控件的布局根部有-10左边距和-10上边距,则可以执行此操作。在用户控件的布局根目录下的平铺backgoround,看起来像是对齐问题而不是刷问题。

+0

...这里没有负边距(并且我不能导致负边距问题) – rasx

0

此问题与托管窗口中平铺的背景填充到UserControl实例的计算高度有关。我仍然无法在新项目中复制此问题,但它“解决了”(通过在用户控件中水平而不是垂直地堆叠面板)。

0

这里有两个诊断技术,可以在你们这样的情况下是有用的:

  1. 把你的复杂的工程,进行复制,并开始撕扯出来的代码和XAML大段,直到问题消失。然后把最后一节放回去,轻轻地撕下东西。重复,直到找到导致差异的变化。

  2. 运行该应用程序,打破本地变量引用您的UserControl的位置,然后探索Locals或Watch窗口中UserControl上方和下方的可视化树。查看每个Visual的内部属性VisualOffset,VisualTransform和VisualContentBounds。这些属性通常会提示您哪些属性设置不正确,然后从中找出原因。