我不知道我的头衔是否正确。
但是我在这里正在做的是创建一个在画布上绘制矩形的程序。
到目前为止,当我按下键盘上的SHIFT
键时,可以通过触发依赖项属性在画布上绘画。但我希望它变得充满活力。我创建了另一个依赖项属性,然后在我的XAML上可以传递KEY
我的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
或任何建议中的一种好习惯。
答案 0 :(得分:0)
键和修饰符是两个不同的东西。我只是在Window.InputBindings上添加/删除KeyBinding对象。它将为您处理99%的工作。它已经支持将修饰符与+结合使用,并处理左右键等。您只需将Ctrl + Shift定义到Modifer中,然后为其提供ICommand即可回调。容易豆豆。