代码之家  ›  专栏  ›  技术社区  ›  Vithis

WPF更改边距会向下推其他元素

  •  1
  • Vithis  · 技术社区  · 6 年前

    首先,很抱歉我的英语不好。

    我想让纽扣“砰”的一声在我的应用程序中,当我将鼠标悬停在它们上时。

    这就是我想到的:

     <Style x:Key="SelectButton" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="False">
                    <Setter Property="Content">
                        <Setter.Value>
                            <Image Source="\directory"/>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Margin">
                        <Setter.Value>
                            <Thickness Bottom="10" Right="10" Top="10" Left="10"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Content">
                        <Setter.Value>
                            <Image Source ="\directory"/>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Margin">
                        <Setter.Value>
                            <Thickness Bottom="0" Right="0" Top="0" Left="0"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    

    您可以在此处查看编译后的外观:

    enter image description here

    问题是,每当我更改按钮的边距时,它都会向下推应用程序的所有其他元素。我真的没有主意了。

    提前谢谢你。

    1 回复  |  直到 6 年前
        1
  •  5
  •   user1228 user1228    6 年前

    您正在调整按钮的大小,这将导致此行为。这完全是意料之中的事。

    幸运的是,您真正想做的是应用 RenderTransform . 它们不会影响布局。从文件中,

    渲染变换不会重新生成布局大小或渲染大小信息。渲染变换通常用于为元素设置动画或应用临时效果。例如,该元素在聚焦或鼠标悬停时可能会缩放,或者在加载时可能会抖动,以吸引眼球到用户界面(UI)的该部分。

    您需要使用 ScaleTransform . 变换很有趣。使用后不久,你就会意识到你可以为它们设置动画,然后你就可以为它们设置动画了。