我们正在使用WPF Canvas及时显示酒店房间的 Map .

可以使用滚动条移动它,这是通过该画布的TranslateTransform完成的 . 甚至可以缩放它,这是通过画布的ScaleTransform完成的 . 用户可以在该 Map 中选择一个块,通常通过以下方式完成:

Rectangle
Canvas.Children.Add
Canvas.SetLeft
Canvas.SetTop

但似乎在Canvas形成时会出现一个错误,因为它会停止渲染一个新的内容(例如,该块选择),该内容在转换后添加 . 我知道新内容确实已添加到画布中,因为当用户将比例设置回1(无比例)时,它会突然显示 . 问题在尺度<1时可见,可能是当画布获得更多要绘制的对象时 .

我试图强制画布在转换的情况下通过ArrangeOverride或UpdateLayout重绘,但它没有帮助 .

那么有谁知道发生了什么以及如何解决它?非常感谢帮助 .

谢谢 .

Edit:

我在这里准备了一个关于GitHub的MCVE:https://github.com/kanovsky/CanvasTest

当我有这个例子时,我确认我的猜想是当画布中有很多元素时会出现错误,因此ScaleTransform没有问题 .

整个控件基于这篇文章:https://www.codeproject.com/Articles/31661/Much-Faster-Silverlight-Scrolling

在Silverlight中没有问题,最近被转移到出现此错误的WPF .