2

次の UI 要素階層があります: UserControl>ScrollViewer>Canvas。キャンバスにたくさんのものを描いていますが、UserControl よりも大きくなり、その時点で ScrollViewer にスクロールバーが表示されます。ここまでは順調ですね。ここで、ScaleTransform を Canvas に適用します (たとえば、2.0 で、すべてを 2 倍の大きさにします)。ただし、スクロールバーが調整されないため、拡大したキャンバスの途中までしかスクロールできません。ScrollViewer 内に表示されているキャンバスに scaletransform を適用するときに、ScrollViewer スクロールバーを調整するにはどうすればよいですか?

4

2 に答える 2

3

あなたの問題は、ScaleTransformが であり、RenderTransformではないことLayoutTransformです。ScrollViewer に報告されるサイズは、スケールに関係なく同じサイズです。

これを回避するために過去に使用した 1 つの解決策は、Canvas を別の Canvas にネストすることです。その後、コードで外側の Canvas のサイズを変更して、内側の Canvas の実際のサイズを反映させることができます。ScrollViewerが更新され、正しい寸法が反映されます。内側のキャンバスのサイズを実際に変更するのではなく、スケールを変更するだけです。

于 2010-07-28T16:09:49.163 に答える
2

この答えはあなたの質問に答えるはずです: XAML: 子オブジェクトの ScaleTransform が大きくなったときに ScrollViewer にスクロールバーを表示する

于 2010-07-30T23:25:18.490 に答える