Свойство Trigger IsPressed кнопки с кодом

84
9

У меня есть меню с кнопками. Когда пользователь нажимает кнопку, он будет выполнять тот же метод, пока не отпустит кнопку. Другими словами, я запускаю задачу в MouseDown, и я останавливаю эту задачу на MouseUp.


вот моя кнопка


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

Я хочу, чтобы нажимать кнопку с помощью сочетания клавиш. В результате я подписался на событие главного окна PreviewKeyDown и PreviewKeyUp. Эти события срабатывают правильно, и я могу запустить задачу, когда ключ выключен, и остановите задачу, когда ключ вверх. Я хочу, чтобы кнопка изменила свое состояние на нажатие, чтобы пользователь мог визуально видеть его. Как изменить состояние кнопки нажатой с помощью С#?


Изменить


Я закончил тем, что изменил значение IsPressed с помощью отражения, потому что установщик закрыт как:


typeof(Button).GetMethod("set_IsPressed", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(BtnInstance , new object[] { true }); 

спросил(а) 2021-01-13T23:56:06+03:00 1 неделя назад
1
Решение
59

Это может помочь вам в этом. В VS2013 я щелкнул правой кнопкой мыши по кнопке, выберите "Редактировать шаблон", затем "Редактировать копию". Затем в созданном им стиле было создано свойство "RenderPressed" в созданном ControlTemplate. Он привязан к IsPressed по умолчанию, но я изменил привязку к bool в моей модели ViewModel, и я смог переключить кнопку.

ответил(а) 2021-01-13T23:56:06+03:00 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема