Я не знаю, правильный ли у меня заголовок.
Но я здесь делаю то, что создаю Программу, которая рисует прямоугольник на холсте.
На данный момент я могу рисовать на холсте, вызывая свойство зависимости, когда нажимаю клавишу SHIFT
на клавиатуре.Но я хочу, чтобы это стало динамичным.Я создаю еще одно свойство зависимости, затем в моем XAML я могу передать ключ
как-то так в моем XAML
DrawingTrigger="Ctrl+Shift"
На данный момент это мой класс
class WindowHelper : Behavior<Window>
{
public bool IsDrawing
{
get { return (bool)GetValue(IsDrawingProperty); }
set { SetValue(IsDrawingProperty, value); }
}
// Using a DependencyProperty as the backing store for IsDrawing. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsDrawingProperty =
DependencyProperty.Register("IsDrawing", typeof(bool), typeof(WindowHelper),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, null));
protected override void OnAttached()
{
AssociatedObject.KeyDown += AssociatedObject_KeyDown;
AssociatedObject.KeyUp += AssociatedObject_KeyUp;
base.OnAttached();
}
private void AssociatedObject_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
IsDrawing = false;
}
private void AssociatedObject_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
IsDrawing = true;
}
protected override void OnDetaching()
{
AssociatedObject.KeyDown -= AssociatedObject_KeyDown;
AssociatedObject.KeyUp -= AssociatedObject_KeyUp;
base.OnDetaching();
}
}
И после поиска я нашел код, который распечатывал нажатие клавишных модификаторов
Console.WriteLine(Keyboard.Modifiers);
с модификатором клавиатуры.Когда я нажал Ctrl + Shift + Alt
, это дает мне
Alt, Control, Shift
С этим, как я могу использовать это, чтобы решить мою проблему?
Это хорошая практикачтобы проверить, найдено ли каждое слово в DrawingTrigger
, установите IsDrawing
в True
или любое предложение.