2010-07-28 71 views
2

我有以下UI元素层次结构:UserControl> ScrollViewer> Canvas。我在画布上绘制了很多东西,并且它比UserControl更大,此时ScrollViewer显示滚动条。到现在为止还挺好。现在我将一个ScaleTransform应用于Canvas(例如2.0,使所有内容都大一倍)。但是,我的滚动条不能调整,所以我现在只能在放大的画布上滚动一半。当我将缩放转换应用于在ScrollViewer中显示的画布时,如何让我的ScrollViewer滚动条进行调整?Silverlight缩放转换调整滚动条

回答

3

您的问题是ScaleTransformRenderTransform而不是LayoutTransform。不管比例是多少,它向ScrollViewer报告的大小都是相同的大小。

我以前用来解决这个问题的一个解决方案是将Canvas嵌套在另一个Canvas中。然后,您可以在代码中更改外部Canvas的大小以反映内部Canvas的实际尺寸。然后ScrollViewer将更新以反映正确的尺寸。您实际上并没有改变内部画布的大小,只需更改比例。