我有以下 UI 元素层次结构:UserControl>ScrollViewer>Canvas。我在画布上画了很多东西,它变得比 UserControl 大,此时 ScrollViewer 显示滚动条。到现在为止还挺好。现在我将 ScaleTransform 应用到 Canvas(比如 2.0,使所有内容都变大一倍)。但是,我的滚动条无法调整,所以我现在只能在放大的画布上滚动一半。当我将 scaletransform 应用于 ScrollViewer 中显示的画布时,如何让我的 ScrollViewer 滚动条进行调整?
问问题
1090 次
2 回答
3
你的问题是ScaleTransform
is aRenderTransform
而不是 a LayoutTransform
。无论比例是多少,它报告给 ScrollViewer 的大小都是相同的。
我过去用来解决此问题的一种解决方案是将 Canvas 嵌套在另一个 Canvas 中。然后,您可以在代码中更改外部 Canvas 的大小以反映内部 Canvas 的实际尺寸。然后ScrollViewer
将更新以反映正确的尺寸。你实际上并没有改变内部 Canvas 的大小,你只是改变了比例。
于 2010-07-28T16:09:49.163 回答
2
这个答案应该回答你的问题: XAML: make a ScrollViewer show scrollbars when the ScaleTransform of a child object get big
于 2010-07-30T23:25:18.490 回答