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