2010-07-28 72 views
2

我有以下UI元素層次結構:UserControl> ScrollViewer> Canvas。我在畫布上繪製了很多東西,並且它比UserControl更大,此時ScrollViewer顯示滾動條。到現在爲止還挺好。現在我將一個ScaleTransform應用於Canvas(例如2.0,使所有內容都大一倍)。但是,我的滾動條不能調整,所以我現在只能在放大的畫布上滾動一半。當我將縮放轉換應用於在ScrollViewer中顯示的畫布時,如何讓我的ScrollViewer滾動條進行調整?Silverlight縮放轉換調整滾動條

回答

3

您的問題是ScaleTransformRenderTransform而不是LayoutTransform。不管比例是多少,它向ScrollViewer報告的大小都是相同的大小。

我以前用來解決這個問題的一個解決方案是將Canvas嵌套在另一個Canvas中。然後,您可以在代碼中更改外部Canvas的大小以反映內部Canvas的實際尺寸。然後ScrollViewer將更新以反映正確的尺寸。您實際上並沒有改變內部畫布的大小,只需更改比例。