Wpf依赖属性动态键向下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wpf依赖属性动态键向下相关的知识,希望对你有一定的参考价值。
我不知道我的头衔是否合适。
但我在这里做的是我正在创建一个在画布上绘制矩形的程序。
截至目前,当我按下键盘上的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
或任何建议都是一个好习惯。
答案
键和修饰符是两个不同的东西。我只是在Window.InputBindings上添加/删除KeyBinding对象。它将为您处理99%的工作。它已经支持将修饰符与+组合以及处理左右键等。您只需将Ctrl + Shift定义为Modifers,然后给它一个ICommand来回调。容易豌豆。
以上是关于Wpf依赖属性动态键向下的主要内容,如果未能解决你的问题,请参考以下文章