Silverlight中的缩放控件会缩小控件,但不会缩小它占用的空间

时间:2011-01-25 18:36:36

标签: wpf silverlight expression-blend

我注意到如果我在控件上使用ScaleTransform是Silverlight,它会缩小控件的可见方面,但不会缩小它占用的空间(即其边界框)。

无论如何都要覆盖此行为,以便在应用ScaleTransform时控件边界框都缩小了吗?或者是否有其他方法来缩小UserControl?如果我只是通过调整高度/宽度来缩小它,很多细节都会消失(它们没有正确地消除别名)。

(注意:我在Expression Blend中观察到这种行为,但我认为它一般适用于Silverlight / WPF控件。)

为了上下文,我试图通过将UserControl放在Button中来制作图像按钮。我正在将UserControl转换为X = 0.15& Y = 0.15。 UserControl正确缩小,但Button看起来像是有一个巨大的填充,因为UserControl的边界框不会相应缩小。我可以将ScaleTransform应用于整个按钮,但是它是具有巨大边界框的按钮,这会产生其他问题。

1 个答案:

答案 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>