2


0

Silverlight scaletransformはスクロールバーを調整します

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

2 Answer


3


あなたの問題は、「ScaleTransform」が「LayoutTransform」ではなく「RenderTransform」であることです。 ScrollViewerに報告するサイズは、縮尺に関係なく同じサイズです。

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


2


この答えはあなたの質問に答える必要があります:https://stackoverflow.com/questions/2394370/xaml-make-a-scrollviewer-show-scrollbars-when-the-scaletransform-of-a-child-obje/2407021#2407021[XAML :子オブジェクトのScaleTransformが大きくなったときにScrollViewerにスクロールバーを表示させる]