Come creare gesto di ingresso per la pagina / finestra da un controllo utente
-
21-08-2019 - |
Domanda
Ho un'usercontrol riutilizzabile che utilizza alcuni comandi e gesti tastiera corrispondenti, (Specificamente fuga e Ctrl + 1 ... Ctrl + 9)
Ora, come io uso questo UserControl in più sedi che vorrei definire i gesti di ingresso nel UserControl, che funziona bene fino a quando il fuoco è all'interno del UserControl. Tuttavia, avrei bisogno di lavorare più a lungo focus è all'interno della pagina / finestra corrente.
Come posso farlo, o devo davvero fare attacchi di comando / input in ogni pagina?
Soluzione
Si potrebbe gestire l'Loaded
caso di UserControl
e camminare l'albero logica per trovare la pagina possessore / finestra, quindi è possibile aggiungere le associazioni lì.
per es.
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)));
}
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow