2017-01-17 2 views
3

Je développe actuellement et Wpf-Application avec la bibliothèque DotNetBrowser.Les événements tactiles dotnetbrowser en mode lourd ne sont pas passés à wpf

La cible est donc un logiciel de kiosque.

Je dois utiliser le type BrowserType.HEAVYWEIGHT car notre webapp qui est chargée avec le contrôle ne fonctionne correctement qu'avec ce type. En mode léger, je capture les événements tactiles, mais aussi les événements sont déclenchés lors du swyping de notre webapp. Mais revenons au problème:

<code> 
    Browser browser = BrowserFactory.Create(BrowserContext.DefaultContext,  BrowserType.HEAVYWEIGHT);  
    m_BrowserView = new WPFBrowserView(browser); 
</code> 

J'ai deux gestionnaires d'événements tactiles

<code> 
    private void OnTouchUp(object sender, TouchEventArgs e) 
    { 
     Console.WriteLine("Touch up"); 
     base.OnTouchUp(e); 
    }</code> 

et

<code> 
    private void OnTouchDown(object sender, TouchEventArgs e) 
    { 
     Console.WriteLine("Touch down"); 
     base.OnTouchDown(e); 
    } 
</code> 

Je me suis inscrit ces deux méthodes sur le constructeur de MainWindow ni

<code> 
    TouchUp += OnTouchUp; 
    TouchDown += OnTouchDown; 
</code> 

ni

<code>  
    m_BrowserView.TouchUp += OnTouchUp; 
    m_BrowserView.TouchDown += OnTouchDown; 
</code> 

forcé l'application d'entrer dans mes méthodes tactiles

DotNetBrowser: 1.8.4 WPF: 4.5.2 OS: Windows 10

Répondre

2

Le mode de rendu des poids lourds implique l'intégration d'un fenêtre native dans votre application. Par conséquent, toutes les entrées utilisateur sont d'abord capturées par cette fenêtre et les événements ne sont pas déclenchés automatiquement dans l'application .NET.

Pour mettre en œuvre ces événements pour les contrôles fonctionnant en mode de rendu lourd, DotNetBrowser intercepte ces événements pour Chromium et notifie le côté .NET. Ceci est déjà fait pour les événements de souris et de touches dans DotNetBrowser, mais pas pour les événements tactiles.

Si la présence de ces événements est critique pour vous - veuillez contacter le support de DotNetBrowser par e-mail et demander cette fonctionnalité. Cela ne prendra pas beaucoup de temps pour l'implémenter.

+0

merci, j'ai récemment contacté le support, Voyons ce qui se passe – DotNetDev

+1

Cette fonctionnalité a été implémentée et est présente dans DotNetBrowser 1.9: http://dotnetbrowser-support.teamdev.com/samples/listening-to-touch-gesture-events –

-1

Cette fonctionnalité a été mis en œuvre et est présent dans DotNetBrowser 1.9: https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000112125-listening-to-touch-gesture-events

+0

Veuillez ne pas poster de réponse aux liens uniquement. les liens sont sensibles à la pourriture des liens lorsque le lien est déplacé ou supprimé. S'il vous plaît ajouter le code complet et la solution dans votre réponse – Tschallacka

+1

@Tschallacka merci pour l'information. –

1

Je résolu par cette approche que le pipeline pour LongTap est LONG_PRESS, TAP_CANCEL, LONG_TAP

browser.GestureEvent += (sender, args) => 
      { 
       m_Gesture.Add(args.GestureType); 
       if (args.GestureType == GestureType.LONG_PRESS) 
       { 
        //// prepare the main action 
       } 

       if (args.GestureType == GestureType.LONG_TAP) 
       { 
        ////do the main action; 
       } 
      }