C# Wpf依赖属性动态键关闭
我不知道我的头衔是否合适 但我在这里做的是创建一个在画布上绘制矩形的程序 现在,当我按下键盘上的C# Wpf依赖属性动态键关闭,c#,wpf,data-binding,dependency-properties,C#,Wpf,Data Binding,Dependency Properties,我不知道我的头衔是否合适 但我在这里做的是创建一个在画布上绘制矩形的程序 现在,当我按下键盘上的SHIFT键时,我可以通过触发依赖项属性在画布上绘制。但我希望它变得充满活力。我创建了另一个依赖属性,然后在XAML上传递密钥 我的XAML上有类似的东西 DrawingTrigger="Ctrl+Shift" 现在这是我的课 class WindowHelper : Behavior<Window> { public bool IsDrawing
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();
}
}
使用键盘修改器。当我按下Ctrl+Shift+Alt时
它给了我
Alt, Control, Shift
有了这个,我怎么能用它来解决我的问题呢
检查
DrawingTrigger
中的每个单词是否被找到是一种好的做法,设置是将绘制成真的或任何建议。键和修饰符是两种不同的东西。我只想在Window.InputBindings上添加/删除一个KeyBinding对象。它将为您处理99%的工作。它已经支持将修改器与+组合,并处理左右键等。例如,您只需在修改器中定义pass-Ctrl+Shift,并给它一个ICommand以回调。放松点
Alt, Control, Shift