2017-11-16 3 views
0

Hy,Wie zu überschreiben Enter drücken Sie auf eine Schaltfläche in Xamarin PCL UWP?

Ich arbeite an einem Xamarin PCL-Projekt mit vielen Einträgen und Schaltflächen für UWP. Für die Einträge habe ich in einem benutzerdefinierten Renderer eine Keydown- und Keyup-Funktion zum Erkennen der Enter-Taste gedrückt. Als Ergebnis geht es zum nächsten UI-Element. Für eine Schaltfläche brauche ich die gleiche Erkennung, aber im Renderer in geht nicht zur Funktion keyup oder keydown.

So wie kann ich eine Taste drücken, um eine Eingabe zu drücken, bevor Sie den ursprünglichen Befehl ausführen?

Hier ist der Code, den ich implementiert habe.

public class CustomButtonRenderer : ButtonRenderer 
{ 
    public CustomButtonRenderer() 
    { 
    } 

    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e) 
    { 
     Xamarin.Forms.Button appButton = (Xamarin.Forms.Button)Element; 
     base.OnElementChanged(e); 
     if (Control != null && appButton != null) 
     { 
      Control.KeyUp += Control_KeyUp; 
      Control.KeyDown += Control_KeyDown; 
     } 
    } 


    private void Control_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
    } 
    private void Control_KeyUp(object sender, KeyRoutedEventArgs e) 
    { 
     Xamarin.Forms.Button appButton = (Xamarin.Forms.Button)Element; 
     switch (e.Key) 
     { 
      case (Windows.System.VirtualKey.Enter): 
       { 
        FocusManager.TryMoveFocus(FocusNavigationDirection.Next); 
        break; 
       } 
     } 

    } 
} 

Antwort

0

Sie müssen die KeyRoutedEventArgs.Handled Eigenschaft auf true einzustellen. Dies sollte tun, was Sie gefragt haben:

+0

Leider wird die Control_keyDown nicht aufgerufen, wenn ich die Eingabetaste oder die Leertaste drücken. Mit jedem anderen Schlüssel geht es zur Methode aber nicht mit diesen 2 Tasten. –

+0

Nur in der Funktion Control_click geht es. Aber als ich nicht mit der Taste sehen kann, wird gedrückt. –

Verwandte Themen