Масштабирование элементов управления в Silverlight сжимает элемент управления, но не занимает занимаемое им пространство. - PullRequest
0 голосов
/ 25 января 2011

Я замечаю, что если я использую ScaleTransform для элемента управления Silverlight, он сокращает видимые аспекты элемента управления, но не пространство, которое он занимает (т. Е. Его ограничительную рамку).

Есть ли способ переопределить это поведение, чтобы элементы управления и ограничивающего прямоугольника одновременно сжимались при применении ScaleTransform? Или есть какой-то другой способ уменьшить UserControl? Если я просто уменьшу его, настроив Высоту / Ширина, многие детали исчезнут (они не сглаживают должным образом).

(Примечание. Я наблюдаю это поведение в Expression Blend, но полагаю, что оно в целом относится к элементам управления Silverlight / WPF.)

Ради контекста я пытаюсь создать кнопку с изображением, поместив UserControl внутри кнопки. Я преобразую UserControl в X = 0,15 и Y = 0,15. UserControl сжимается должным образом, но Button выглядит так, как будто имеет массивный отступ, потому что ограничивающий прямоугольник UserControl не сжимается соответствующим образом. Я мог бы применить ScaleTransform ко всей кнопке, но тогда эта кнопка имеет огромный ограничивающий прямоугольник, и это создает другие проблемы.

1 Ответ

2 голосов
/ 25 января 2011

Вам нужно использовать LayoutTransform, а не RenderTransform.Поскольку он не поддерживается сразу с Silverlight, вы можете получить LayoutTransformer элемент управления из Silverlight Toolkit , который позволит вам сделать это.

Ваш код будет выглядетьвот так:

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