【发布时间】:2014-02-27 15:46:23
【问题描述】:
我有一个带按钮的菜单。当用户按下按钮时,它将执行相同的方法,直到他释放按钮。换句话说,我在 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 });
【问题讨论】:
-
可以在后面的代码中设置
IsPressed属性吗? -
IsPressed 没有设置方法我只能读取它:(
-
我认为,您需要
ToggleButton来执行此操作。他有 IsChecked 属性,可以有三种状态:真、假和空。 -
@AnatoliyNikolaev 这是个好主意。您还可以使用 bool 属性创建自己的按钮,并在该按钮上设置一个数据触发器,用于设置样式和按下样式。我会尝试将一些东西放在一起并发布作为答案。