[英]How to Simulate Button pressed visual in Forms?
我是WPF的新手,并且对表格中的行为有疑问。
我添加了一个按键事件以捕获按下的返回键。
现在的问题是,没有视觉反馈。 是否可以让按钮看起来像是被鼠标按下了?
它应该看起来像我通过鼠标按下按钮,而是按下返回后。
也许解决方案将通过更改按钮的KeyPressed
事件来实现。
看到这个代码示例:
At first, create a button:
<ButtonContent="ButtonPressed" Name="buttonPressed" />
然后你应该向你的main.xaml添加一个Resources
,告诉按钮它的外观(比如网页中的CSS)。
<Window.Resources>
<Style TargetType="Button">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="{StaticResource GlowFX}" />
<Setter Property="Width" Value="150" />
<Setter Property="Height" Value="35" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource GlowFXPressed}" />
</Trigger>
</Style.Triggers>
</Style>
使用Background
属性我正在更改按钮的默认背景。 当你在按钮上时Trigger
启动,正如你所看到的,它会再次改变背景,使用这两种样式注意:在按钮样式之前粘贴它们:
<RadialGradientBrush x:Key="GlowFX" GradientOrigin=".5,1" Center=".5,1">
<GradientStop Offset="0" Color="#990000FF"></GradientStop>
<GradientStop Offset=".3" Color="#660000DD"></GradientStop>
<GradientStop Offset="1" Color="#33000000"></GradientStop>
</RadialGradientBrush>
<RadialGradientBrush x:Key="GlowFXPressed" GradientOrigin=".5,1" Center=".5,1">
<GradientStop Offset="0" Color="#990000FF"></GradientStop>
<GradientStop Offset=".3" Color="#880000DD"></GradientStop>
<GradientStop Offset="1" Color="#33000000"></GradientStop>
</RadialGradientBrush>
这适用于事件IsMoseOver
,但我认为它与IsMoseOver
相同。 只看一点;)
正如Rachel所说,你应该重写完整的模板,并告诉Press事件如何处理样式。
如果我理解,你想模拟按钮点击的视觉效果,那么,要实现这一点,你必须改变按钮的IsPressed
属性,但是只读,那么, System.Reflection
很有用:
在KeyDown
事件:
typeof(Button).GetMethod("set_IsPressed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(btnSimulate, new object[] { true });
和KeyUp
:
typeof(Button).GetMethod("set_IsPressed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(btnSimulate, new object[] { false });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.