[英]WPF: How to assign IsMouseOver and IsPressed Button State backgrounds from Code Behind no XAML
[英]Trigger IsPressed property of button with code behind
我有一个带按钮的菜单。 当用户按下按钮时,它将执行相同的方法,直到他释放按钮。 换句话说,我在MouseDown上启动任务,然后在MouseUp上停止该任务。
这是我的按钮
<Button
x:Name="pushButton"
Focusable="False"
Content="{Binding ButtonLabel}"
PreviewMouseDown="StartTask"
PreviewMouseUp = "StopTask"
/>
我希望能够使用键盘快捷键按下按钮因此我订阅了主窗口事件PreviewKeyDown
和PreviewKeyUp
。 这些事件被正确触发,我可以在键关闭时启动任务,并在键启动时停止任务。 我希望按钮将其状态更改为按下,以便用户可以直观地看到它 。 如何用c#更改按钮的状态?
我最终通过反射改变了它的IsPressed值,因为setter是私有的,因为:
typeof(Button).GetMethod("set_IsPressed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(BtnInstance , new object[] { true });
这可能会让你成为那里的一部分。 在VS2013中,我右键单击按钮,选择编辑模板,然后选择编辑复制..然后在它创建的样式中,它创建的ControlTemplate中有一个“RenderPressed”属性。 它默认绑定到IsPressed,但是我在ViewModel中将绑定更改为bool,并且我能够切换按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.