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

Windows Presentation Foundation Discussion :

Event qui ne se déclenche pas et IsEnabled selon contenu Textbox


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut Event qui ne se déclenche pas et IsEnabled selon contenu Textbox
    Bonjour,

    J'ai un problème avec l'application que je développe actuellement. Je voudrais rendre mon application bordeless et je voulais tout de même pouvoir la deplacer quand la souris clique puis fais glisser la fenêtre. Donc j'ai dans ma window j'ai un Grid qui a deux lignes, une contenant le haut de l'application, la partie qui permet de deplacer la fenêtre et une deuxième contenant un autre Grid qui contient lui d'autre éléments. Voici ce que donne basiquement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Window>
       <Grid>
          <Grid.RowDefinitions>
                <RowDefinition Height="20"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
          </Grid.RowDefinitions>
          <Border Grid.Row="0"></Border>
          <Grid Grid.Row="1"></Grid>
       </Grid>
    </Window>
    Donc j'ai voulus affecter un évenement MouseMove sur le border car c'est cet élément qui remplace la barre qui permettait de glisser la fenêtre. Pour cela j'avais trouvé un exemple de code sur cette page http://wpfwindow.codeplex.com/. J'ai crée mon évenement et quand je tente de tester, rien ne se passe, l'événement n'est pas appellé. J'ai alors essayé de mettre l'événement sur le Grid parent, et là cela marche. C'est comme ci le Grid était par dessus le border et ne veut donc pas enclencher l'événement car le border n'est pas considéré comme survolé par la souris. Je demande donc votre expertise pour m'aider à résoudre ce problème.

    Sinon j'ai une autre question (qui n'a aucun rapport avec le problème précédent). Mais je voudrais pouvoir rendre un bouton enabled ou non selon qu'un TextBox soit vide ou non. J'ai fait des recherches sur internet, j'ai trouvé des exemples mais la plupart du temps pour une checkbox. Et le seul que j'avais trouvé avec une Textbox, je ne l'ai pas compris. La personne parlait d'utiliser un Converter. Donc ma question est comment-puis je rendre mon bouton accessible ou non selon le contenu d'une TextBox.

    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    - Essaie de mettre une couleur en background de ton border pour voir si tu passes dans ton évènement.

    - Sinon essaie l'évènement MouseLeftButtonDown(ou PreviewMouseLeftButtonDown) :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        // DragMove handles all the window placement automatically!
        this.DragMove();
    }

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Citation Envoyé par Takumi
    Sinon j'ai une autre question (qui n'a aucun rapport avec le problème précédent). Mais je voudrais pouvoir rendre un bouton enabled ou non selon qu'un TextBox soit vide ou non. J'ai fait des recherches sur internet, j'ai trouvé des exemples mais la plupart du temps pour une checkbox. Et le seul que j'avais trouvé avec une Textbox, je ne l'ai pas compris. La personne parlait d'utiliser un Converter. Donc ma question est comment-puis je rendre mon bouton accessible ou non selon le contenu d'une TextBox.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Window 
      ...
      xmlns:l="clr-namespace:TonNamespace"
      >
     
      <Window.Resources>
        <l:EmptyTextToBoolConverter x:Key="EmptyTextToBoolConv" />
      </Window.Resources>
     
    ...
     
      <TextBox x:Name="Tbox1" ... />
      <Button ... IsEnabled="{Binding ElementName=Tbox1, Path=Text, Converter={StaticResource EmptyTextToBoolConv}}" />

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      public class EmptyTextToBoolConverter : IValueConverter {
        public object Convert(object o, Type type, object parameter,
                              System.Globalization.CultureInfo culture) {
          return (string.IsNullOrEmpty(o.ToString()));
        }
     
        public object ConvertBack(object o, Type type, object parameter,
                                  System.Globalization.CultureInfo culture) {
          throw new NotSupportedException();
        }
      }
    Dans la méthode Convert à toi de faire le test qui va bien, là je retourne la valeur du test string.IsNullOrEmpty

  4. #4
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    Merci pour ton aide. A partir du moment où j'ai mis une couleur (j'ai mis de la transparence, c'est ce que je recherchais) l'événement fonctionne. Je suppose que sans couleur le border n'était pas dessiné donc impossible d'activer un événement que ce soit.

    J'ai finalement un autre petit désagrement, en faite dans cette barre que je souhaite mettre un Menu de type Menu. Mon problème est que quand je vais sur le menu et tente de cliquer dessus, c'est l'événement MouseMove de ma barre qui s'enclenche de ce fait le menu se referme de suite et je peux deplacer ma fenêtre. Je dirais que mon événement MouseMove marche un peut trop bien là . En faite il aurait fallu que je puisse déplacer ma fenêtre que si ma souris survole mon border et qu'il n'y a pas d'autre Control à cette endroit. Donc si ma souris se retrouve sur le menu il faudrait que le MouseMove du border ne soit pas enclenché. Je pensais que régler le Zindex pourrais régler ça mais non. J'avais lu un article sur les évenements routés, je pense que ça peut être une piste pour mon problème. Est-ce que je me trompe? Malheureusement il était en Anglais et pas mal de chose sont resté assez obscurs encore. Pourriez-vous me donner des pistes pour pouvoir corriger cela.

    Sinon je n'ai pas encore essayé le code pour activer/desactiver un bouton selon le contenu d'un TextBox, mais en regardant rapidement ce qui a été écrit je pense que j'aurais aussi 2-3 questions. Mais chaque choses en son temps

    Merci d'avance.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    tu peux eventuellement mettre un trigger
    et un converter pour faire le true ou false
    je sais que c'est pas surper clair
    mais file moi un peu de code et je te le corrigerais

  6. #6
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    C'est à dire? Je n'ai pas très bien saisis ce que tu voulais expliquer? C'était pour mon problème de bouton a activer selon le contenu d'un textbox ou bien pour mon problème de déplacement de la fenêtre même quand je clique sur le menu?

    Pour le bouton j'ai réussi avec l'exemple de code qui m'a été donné. Par contre il est vrai que je n'ai toujours pas trouvé comment faire pour faire en sorte que la fenêtre ne se déplace que si je clique sur le haut si il n'y a aucun control en dessous du curseur.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    fait un projet exemple
    explique dans un fichier text ce que tu veux
    je jeterais un coup d'oeil

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

Discussions similaires

  1. [SWING] Evenement qui ne se déclenche pas
    Par LordBob dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 15/06/2006, 15h57
  2. Evènement qui ne se déclenche pas
    Par max.lille dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2006, 15h46
  3. onmouseover qui ne se déclenche pas sous IE...
    Par narnou dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/03/2006, 17h26
  4. Un JOB qui ne se déclenche pas
    Par blids dans le forum Oracle
    Réponses: 15
    Dernier message: 09/02/2005, 21h14
  5. [trigger] ... qui ne se déclenche pas
    Par bozo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/01/2004, 11h31

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