【发布时间】:2010-11-17 15:45:25
【问题描述】:
我在使用 Visual Studio 2010 时遇到问题。例如,在属性窗口中向下/向上滚动时会发生这种情况。它的内容在几毫秒内变得模糊。
当我使用“ScrollViewer”时,它也发生在我自己的 WPF 应用程序中。
有人知道怎么解决吗?
【问题讨论】:
-
也许有一天我们的办公桌上都会有一台 300 DPI 的显示器。您的 WPF 程序将为此做好准备。
我在使用 Visual Studio 2010 时遇到问题。例如,在属性窗口中向下/向上滚动时会发生这种情况。它的内容在几毫秒内变得模糊。
当我使用“ScrollViewer”时,它也发生在我自己的 WPF 应用程序中。
有人知道怎么解决吗?
【问题讨论】:
在您自己的 WPF 应用程序中,可以通过使用自定义 IScrollInfo 实现将滚动偏移限制为设备像素。这很容易做到。请注意,您必须get the actual screen DPI 才能进行计算。
在 Visual Studio 中,没有“合理”的方法来修复它。显然您可以破解 VS.NET 可执行文件以包含您自己的 IScrollInfo 实现,但我不推荐它!
【讨论】:
避免该问题的唯一方法是完全避免 WPF。尽管它在某些方面很好,但它仍然1 无法获得完全正确的文本。是的,WPF 是 Visual Studio 中问题的根源——从 VS 2010 开始,他们将其中的一部分切换为使用 WPF。
1“仍然”,在这种情况下指的是它曾经更糟糕的事实。从 .NET 4.0 开始,他们已经修复了一些最严重的问题,但是(如您所见)仍然不是很正确。
【讨论】:
我遇到了同样的问题。实际上有一种方法可以在滚动时解决这个问题。 只需将这 3 个属性添加到您的内容控件:
SnapsToDevicePixels="True" UseLayoutRounding="True" TextOptions.TextFormattingMode="Display"
请注意,文本在滚动时可能看起来不像应有的那么平滑(但一旦您停止滚动,就会立即消失)
【讨论】: