2011-02-13 3 views
3

私は単純なキャンバスアイテムを持っています。私はキャンバスの親としてスクロールビューに追加する必要があります。 しかし、私は後にキャンバスとスクロールビューのSilverlightズームエリア

canvas.RenderTransform=new ScaleTransform(){...} 

Scroolbarsを設定し、問題とfased表示されていないか、正しくない作業。 どんな情報もありがとうございます。

答えて

7

レンダートランスフォームは、UIレンダリングプロセスの後半で行われます。それは最終的にコントロールのレンダリングでマトリックス変換を実行します。スクロールビューアはこのトランスフォームを完全に認識しません。スクロールバーは元のCanvasの変形されていないサイズに基づいています。

silverlightツールキットには、LayoutTransformerコントロールが含まれています。このコントロールは、コンテンツをレイアウトプロセスの一部として適用し、変換後のサイズを希望のサイズとしてレポートします。

この検討: - Canvasけれども

<ScrollViewer Width="200" Height="200" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <toolkit:LayoutTransformer> 
      <toolkit:LayoutTransformer.LayoutTransform> 
       <ScaleTransform ScaleX="2" ScaleY="2" /> 
      </toolkit:LayoutTransformer.LayoutTransform> 
      <Canvas Width="150" Height="150" Background="Aquamarine"> 
       <Rectangle Fill="Blue" Canvas.Top="10" Canvas.Left="10" Width="30" Height="30" /> 
      </Canvas> 
     </toolkit:LayoutTransformer> 
    </ScrollViewer> 

を含むスクロールビューア(200)よりも小さいサイズ(150)を有し、それは(300)が大きくなるように、それがスケーリングされます。 LayoutTransformerはキャンバスの変換後サイズである300として、その望ましいサイズを報告します。したがって、ScrollViewerにはスクロールバーが表示されます。 LayoutTransformerの恩恵がなければ、ScrollViewerは、適用されたRenderTransformがあってもCanvasのサイズが150であるとしか見えません。

+3

あなたは私の一日を保存しました! – Evgeny

関連する問題