none
Callbyname (UWP) RRS feed

  • Frage

  • Hi Leute,
    bin gerade dabei ein Menü aus mehreren Button aufzubauen, welches ich mit einem Drehencoder (incl. Hardware-Button) durchlaufen kann (per FocusManager). Wenn der Benutzer jetzt auf den Hardware-Button drückt, soll das jeweilige Click-Ereignis ausgelöst werden. Da man, so wie ich es bisher mitbekommen habe, in UWP Apps keine Tastendrücke simulieren kann, habe ich mir überlegt, in dem ValueChanged des Hardware-Button per FocusManager auszulesen, welcher Button den Focus hat (der Name des Button kann dann in einer Var abgespeichert werden) und damit dann eine Function aufrufen, die den Namen des Soft-Button hat.

    Hier mal exemplarisch, wie ich es meine:

    Dim Fokus As Object
    Dim Name As String
    
    Await Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, Function() As String
                                                                                                                                  Fokus = FocusManager.GetFocusedElement
                                                                                                                                  Name = Fokus.Name
                                                                                                                                  Return ""
                                                                                                                              End Function)
    
    Callbyname(Name)

    Hat vielleicht jemand eine Idee, wie man sowas lösen kann ohne per zig If-Abfragen zu überprüfen, welcher Button gerade gedrückt wurde um anhand dessen dann eine Function aufzurufen? Es werden hinterher relativ viele Steuerelemente, da wäre es doof das per If-Abfrage zu machen. Und Callbyname scheint es in der UWP nicht mehr zu geben, und bei RaiseEvent hab ich es noch nicht hinbekommen einen Event-Namen aus einer Var zu nehmen.

    Danke schon mal im voraus

    Grüße, Tretsch

    Mittwoch, 19. April 2017 23:40

Alle Antworten

  • Hallo Tretsch,

    schreib doch einfach deine eigenen Events und passe sie deinen Bedürfnissen an. Wirklich aufwendig ist das nicht.

    Hier mal etwas Code für ein Event:

    namespace TWyTec.Canvas.Events.EventArgs
    {
        public class PointerRoutedEventArgs : System.EventArgs
        {
            public int PointerId { get; set; }
            public PointerType PointerType { get; set; }
            public GestureType GestureType { get; set; }
            public float X { get; set; }
            public float Y { get; set; }
            public bool Handle { get; set; }
        }
    }
    
    namespace TWyTec.Canvas.Events.Handler
    {
        public delegate void PointerRoutedEventHandler(object sender, PointerRoutedEventArgs e);
    }
    
    public event TWyTec.Canvas.Events.Handler.PointerRoutedEventHandler MGPointerPressed;
            protected virtual void OnPointerPressed(TWyTec.Canvas.Events.EventArgs.PointerRoutedEventArgs e)
            {
                MGPointerPressed?.Invoke(this, e);
            }


    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP

    Mittwoch, 19. April 2017 23:55