繁体   English   中英

触发按钮的IsPressed属性,后面是代码

[英]Trigger IsPressed property of button with code behind

我有一个带按钮的菜单。 当用户按下按钮时,它将执行相同的方法,直到他释放按钮。 换句话说,我在MouseDown上启动任务,然后在MouseUp上停止该任务。

这是我的按钮

<Button
    x:Name="pushButton"
    Focusable="False"
    Content="{Binding ButtonLabel}"        
    PreviewMouseDown="StartTask"
    PreviewMouseUp = "StopTask"        
 />

我希望能够使用键盘快捷键按下按钮因此我订阅了主窗口事件PreviewKeyDownPreviewKeyUp 这些事件被正确触发,我可以在键关闭时启动任务,并在键启动时停止任务。 我希望按钮将其状态更改为按下,以便用户可以直观地看到它 如何用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM