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