我有以下UI元素层次结构:UserControl> ScrollViewer> Canvas。我在画布上绘制了很多东西,它变得比UserControl大,此时ScrollViewer显示滚动条。到现在为止还挺好。现在我将一个ScaleTransform应用于Canvas(比如2.0,使所有内容都增加一倍)。但是,我的滚动条不能调整,所以我现在只能在我放大的画布上滚动一半。当我将scaletransform应用于ScrollViewer中显示的画布时,如何让我的ScrollViewer滚动条进行调整?
答案 0 :(得分:3)
您的问题是ScaleTransform
是RenderTransform
而不是LayoutTransform
。无论规模如何,它向ScrollViewer报告的大小都是相同的。
我过去用来解决这个问题的一个解决方案是将Canvas嵌套在另一个Canvas中。然后,您可以在代码中更改外部Canvas的大小以反映内部Canvas的实际尺寸。然后ScrollViewer
将更新以反映正确的尺寸。您实际上并没有更改内部Canvas的大小,只需更改比例。
答案 1 :(得分:2)