【问题标题】:WPF changing margin pushes other elements downWPF 更改边距将其他元素向下推
【发布时间】:2018-07-20 16:15:29
【问题描述】:

首先,对不起我的英语不好。

我正在尝试让按钮“弹出”?当我将鼠标悬停在我的应用程序上时。

这是我想出的:

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

您可以在此处查看它的编译效果:

问题是,每当我更改按钮的边距时,它都会将应用程序的所有其他元素向下推。老实说,我没有想法。

谢谢,提前。

【问题讨论】:

  • 逻辑似乎不看 gif。你不想增加鼠标悬停的边距吗?即使在您的 gif 中,它也显示按钮变大,但下面的控件在 MouseOver 上向上移动。试试倒车?

标签: c# wpf xaml margin


【解决方案1】:

嗯,您正在调整按钮的大小,这会导致这种行为。这是完全可以预料的。

幸运的是,您真正想做的是申请RenderTransform。它们不影响布局。从文档中,

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

您需要使用ScaleTransform。变形很有趣。在您使用一个之后不久,您就会意识到您可以为它们制作动画,然后您将制作它们的动画。

【讨论】:

  • 这是真的。变换是惊人的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多