IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

comment ne pas perdre le focus sur un textBox quand le busyIndicator se met en marche


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut comment ne pas perdre le focus sur un textBox quand le busyIndicator se met en marche
    Bonjour,


    J'ai une textbox qui me sert à filtrer le contenu d'un Datagrid. Après y avoir entré trois ou quatre caractères (variable en fonction du temps pris pour entrer ces caractères), la requête se lance et le datagrid se met à jour. Le problème est que dès que la recherche se lance, le textbox perd son focus et il n'est plus possible d'affiner la recherche en complétant le filtre (sauf en cliquant une première fois dessus, une deuxième fois à la fin des caractères déjà entrés).

    Voici le code, mon textBox s'appelle "FiltreName"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <riaControls:DomainDataSource x:Name="ContactDS" QueryName="GetContactByGroupeUtilisateurIdQuery" LoadDelay="0:0:1.5" PageSize="8" LoadSize="24" AutoLoad="True" SubmittedChanges="ContactDS_SubmittedChanges" LoadedData="ContactDS_LoadedData" >
     
               <riaControls:DomainDataSource.DomainContext>
                    <MonProjetLocal:J_Context/>
                </riaControls:DomainDataSource.DomainContext>
     
                <riaControls:DomainDataSource.FilterDescriptors>
                    <riaControls:FilterDescriptor Operator="Contains" PropertyPath="ContactLastName"  Value="{Binding ElementName=filtreName, Path=Text}"  IgnoredValue=""/>
                                                    </riaControls:DomainDataSource.FilterDescriptors>
     
            </riaControls:DomainDataSource>


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                		<TextBox x:Name="filtreName"  Width="81" Text="" />
    ça fonctionne presque bien sauf que quand j'entre par exemple "DUP", il va bien me lancer la recherche et me retrouver les "Dupont", "Dupond", "Dupuis"... mais le focus va quitter mon "FiltreName".

    Hor mon utilisateur veut peut-être entrer "DUPU" pour ne retrouver que les "Dupuis". Dès que la recherche est lancée, le focus est perdu et il doit avec la souris, cliquer de nouveau sur le FiltreName puis se mettre derrière le DUP qu'il vient de taper et enfin taper le "U".

    Je voudrais donc que quand le filtre se mette en marche, le focus reste bien sur filtreName et que l'utilisateur puisse décider de rajouter des caractères à volonté.

    En fait, j'ai pu identifier que c'est le busyindicator qui pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <JBase_Controls:BusyIndicator IsBusy="{Binding IsBusy, ElementName=ContactDS}"   VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0" Width="1000" >
    car si je l'enlève, mon focus reste bien sur mon textbox, mais parcontre, l'utilisateur n'est pas informé qu'une requête est en cours d'exécution.

    La solution idéale serait donc d'avoir le busyindicator et garder le focus (même s'il est désactivé temporairement lorsque le busyindicator fonctionne)

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Tu crées un behavior. Sur le OnAttached tu t'abonnes à Focus/Unfocus et EnabledChanged.

    Tu tiens un flag pour savoir si ton textbox et Focus ou non (via les 2 events), et sur le EnabledChanged (qui sera lancé lorsque le BusyIndicator l'état du BusyIndicator changera), tu regardes si tu avais le focus. Si oui tu fais un .Focus.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Merci Skyounet, j'ai jeté un oeil sur les behavior et c'est sans doute ce qui me convenait. J'avais entretemps supprimé le busyindicator et le résultat est satisfaisant, donc je testerai une prochaine fois...


    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ne pas perdre les "0" lors d'un export en CSV
    Par olivier131 dans le forum Excel
    Réponses: 8
    Dernier message: 02/03/2017, 12h54
  2. Réponses: 3
    Dernier message: 31/05/2010, 23h44
  3. Réponses: 0
    Dernier message: 05/03/2009, 16h49
  4. perdre le focus sur un combobox au demarrage du prog
    Par rober dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/11/2006, 23h35
  5. [MySQL] [SQLyog] comment ne pas trier les attributs sur 1 PK
    Par raoulmania dans le forum Installation
    Réponses: 11
    Dernier message: 19/12/2005, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo