2011-01-25 20 views
0

SilverlightはコントロールのScaleTransformを使用すると、コントロールの見た目を縮小しますが、その境界ボックス)。Silverlightのスケーリングコントロールはコントロールを縮小しますが、スペースは縮小しません

ScaleTransformを適用すると、コントロールの境界ボックスが両方とも縮小するように、この動作をオーバーライドする方法はありますか?または、UserControlを縮小するいくつかの他の方法はありますか? Height/Widthを調整して単純に縮小すると、多くの細部が消えます(アンチエイリアスは正しくありません)。

(注:私はExpression Blendの中で、この動作を観察するんだけど、私はシルバー/ WPFは、一般的にコントロールすることが適用されると仮定)

コンテキストのために、私は、画像ボタンを作成しようとしていますButton内にUserControlを配置します。私はUserControlをX = 0.15 & Y = 0.15に変換しています。 UserControlは適切に縮小されますが、UserControlの境界ボックスがそれに応じて縮小されないため、ボタンに大きなパディングがあるように見えます。 ScaleTransformをボタン全体に適用できますが、それは巨大なバウンディングボックスを持つボタンです。これは他の問題を引き起こします。

答えて

2

LayoutTransformを使用し、RenderTransformを使用する必要はありません。 Silverlightを使用するとボックス外ではサポートされないため、これを可能にするSilverlight ToolkitからLayoutTransformerコントロールを取得できます。

<Button> 
    <toolkit:LayoutTransformer> 
     <toolkit:LayoutTransformer.LayoutTransform> 
      <ScaleTransform ScaleX=".15" ScaleY=".15"/> 
     </toolkit:LayoutTransformer.LayoutTransform> 
     <lcl:MyUserControl /> 
    </toolkit:LayoutTransformer> 
</Button> 
+0

おかげで阿部:

あなたのコードでは、そのようにようになります。それがトリックでした。これを理解するのには少し時間がかかりましたが、アセンブリは「C:¥Program Files¥Microsoft SDKs¥Silverlight¥v4.0¥Toolkit¥Apr10¥Bin」にあり、「LayoutTransformer」にはこの参照が必要です: 'xmlns:toolkit =" clr-namespace:System.Windows.Controls; assembly = System.Windows.Controls.Layout.Toolkit " – devuxer

関連する問題