我注意到如果我在控件上使用ScaleTransform是Silverlight,它会缩小控件的可见方面,但不会缩小它占用的空间(即其边界框)。
无论如何都要覆盖此行为,以便在应用ScaleTransform时控件和边界框都缩小了吗?或者是否有其他方法来缩小UserControl?如果我只是通过调整高度/宽度来缩小它,很多细节都会消失(它们没有正确地消除别名)。
(注意:我在Expression Blend中观察到这种行为,但我认为它一般适用于Silverlight / WPF控件。)
为了上下文,我试图通过将UserControl放在Button中来制作图像按钮。我正在将UserControl转换为X = 0.15& Y = 0.15。 UserControl正确缩小,但Button看起来像是有一个巨大的填充,因为UserControl的边界框不会相应缩小。我可以将ScaleTransform应用于整个按钮,但是它是具有巨大边界框的按钮,这会产生其他问题。
答案 0 :(得分: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>