我们有一个非常复杂的WPF应用程序(我在这里无法显示),它的某个用户控件的平铺背景不正确。我无法在“干净”的WPF项目中重现此问题,但会尝试在此图片中说明问题:
(来源:kintespace.com)
灰色区域表示用户控件,黑色和红色检查表示用户控件中的平铺背景 。白色背景代表托管控件的窗口。 VisualBrush
在这里使用,但DrawingBrush
也存在同样的问题。我希望不使用ImageBrush
。
你可以打开一个“干净的”WPF项目并构建一些会导致平铺背景错位的东西吗?
答案 0 :(得分:0)
如果用户控件的布局根目标具有-10左边距和-10上边距,则可以执行此操作。在用户控件的布局根上平铺了backgoround,所以它看起来像对齐问题而不是画笔问题。
答案 1 :(得分:0)
此问题与平铺背景填充到托管窗口中UserControl
实例的计算高度有关。我仍然无法在新项目中复制此问题,但它已“解决”(通过在用户控件中水平而不是垂直堆叠面板)。
答案 2 :(得分:0)
以下两种诊断技术在您的情况下非常有用:
进行复杂项目,制作副本,然后开始撕掉大部分代码和XAML,直到问题消失。然后把最后一节放回去,轻轻地把东西撕掉。重复,直到找到产生差异的变化。
运行应用程序,中断局部变量引用UserControl的位置,然后在Locals或Watch窗口中浏览UserControl上方和下方的可视化树。查看每个Visual的内部属性VisualOffset,VisualTransform和VisualContentBounds。这些属性通常会让您了解错误设置的属性,并从中可以找出原因。