3
我有一个使用几个命令和相应的键盘手势, 可重复使用的用户控件创建页面/窗口输入手势(具体地逃生和Ctrl + 1 ...按Ctrl + 9)如何从用户控制
现在,当我在多个位置使用此用户控件时,我想在用户控件中定义输入手势,只要焦点位于用户控件中,该手势就可以正常工作。但是,只要焦点在当前页面/窗口内,我就需要它才能工作。
我该怎么做,或者我真的必须在每个页面上执行命令/输入绑定?
我有一个使用几个命令和相应的键盘手势, 可重复使用的用户控件创建页面/窗口输入手势(具体地逃生和Ctrl + 1 ...按Ctrl + 9)如何从用户控制
现在,当我在多个位置使用此用户控件时,我想在用户控件中定义输入手势,只要焦点位于用户控件中,该手势就可以正常工作。但是,只要焦点在当前页面/窗口内,我就需要它才能工作。
我该怎么做,或者我真的必须在每个页面上执行命令/输入绑定?
您可以处理UserControl
的Loaded
事件,并沿着逻辑树查找拥有的页面/窗口,然后您可以在其中添加绑定。
例如
public partial class Bogus : UserControl
{
public Bogus()
{
Loaded += (s, e) => { HookIntoWindow(); };
InitializeComponent();
}
private void HookIntoWindow()
{
var current = this.Parent;
while (!(current is Window) && current is FrameworkElement)
{
current = ((FrameworkElement)current).Parent;
}
if (current != null)
{
var window = current as Window;
// Add input bindings
var command = new AlertCommand();
window.InputBindings.Add(new InputBinding(command, new KeyGesture(Key.D1, ModifierKeys.Control)));
}
}
}