Ich habe die この質問 und es funktioniert gut, aber es lenkt von meiner Sendekontrolle ab.
Ich versuche, ein Eingabefeld zu erstellen, das wie ein Textfeld mit automatischer Vervollständigung funktioniert - ein Textfeld und ein Popup-Steuerelement, das die Liste der passenden Elemente enthält. Ich muss in der Lage sein, Tasten zu nehmen, wie Up, Down und leiten sie an das Popup-Steuerelement, und nehmen Sie die anderen Tasten und halten sie auf das Textfeld.
switch (e.Key)
{
case Key.Down:
{
if (!popup.IsOpen)
{
openPopup();
}
else
{
PresentationSource source = PresentationSource.FromVisual( itemList );
if ( source == null ) return;
itemList.RaiseEvent(
new KeyEventArgs( Keyboard.PrimaryDevice, source, 0, e.Key )
{RoutedEvent = Keyboard.KeyDownEvent} );
}
break;
}
}
itemList oben ist das Steuerelement, das aufpoppt und der Fokus wird übertragen, sobald ich RaiseEvent aufrufe.