Возможно ли ScaleTransform все на холсте / сетке, кроме 1 элемента управления? - PullRequest
3 голосов
/ 30 сентября 2008

Дано следующее полотно:

<Canvas>
    <Canvas.LayoutTransform>
        <ScaleTransform ScaleX="1" ScaleY="1" CenterX=".5" CenterY=".5" />
    </Canvas.LayoutTransform>
    <Button x:Name="scaleButton" Content="Scale Me" Canvas.Top="10" Canvas.Left="10" />
    <Button x:Name="dontScaleButton" Content="DON'T Scale Me" Canvas.Top="10" Canvas.Left="50" />
</Canvas>

Можно ли масштабировать 1 кнопку, но не другую при изменении ScaleX и ScaleY?

Ответы [ 3 ]

9 голосов
/ 30 сентября 2008

Не в XAML. Вы можете сделать это в коде, создав обратное преобразование и применив его к объекту, который вы не хотите преобразовывать.

Если вы хотите проявить фантазию, вы можете создать свойство зависимостей, которое вы можете прикрепить в XAML к любому объекту, который вы не хотите преобразовывать с помощью родительского преобразования. Это свойство зависимости будет принимать преобразование родителя, создавать обратное преобразование и применять его к объекту, к которому оно прикреплено.

6 голосов
/ 15 апреля 2011

Не уверен, что это было невозможно, когда вы задали вопрос, но я бы подошел к нему так:

<Button x:Name="dontScaleButton" Content="DON'T Scale Me" Canvas.Top="10" Canvas.Left="50"
        LayoutTransform="{Binding LayoutTransform.Inverse,
                                  RelativeSource={RelativeSource AncestorType=Canvas}}"/>

Хотя оригинальное преобразование все же оказывает на кнопку трансляционный эффект.

3 голосов
/ 30 сентября 2008

Вы также можете реструктурировать элементы так, чтобы элементы, которые вы не хотите масштабировать с помощью Canvas, на самом деле не были потомками этого Canvas.

<Canvas>
    <Canvas>
        <Canvas.LayoutTransform>
            <ScaleTransform ScaleX="1" ScaleY="1" CenterX=".5" CenterY=".5" />
        </Canvas.LayoutTransform>
        <Button x:Name="scaleButton" Content="Scale Me" Canvas.Top="10" Canvas.Left="10" />
    </Canvas>
    <Button x:Name="dontScaleButton" Content="DON'T Scale Me" Canvas.Top="10" Canvas.Left="50" />
</Canvas>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...