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)));
}
}
}