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 :

PasswordBox avec texte lorsque c'est vide


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 927
    Points : 312
    Points
    312
    Par défaut PasswordBox avec texte lorsque c'est vide
    Bonjour,

    Un truc peut-être tout simple, mais pour le moment je n'ai pas trouvé.

    J'aimerais que ma PasswordBox affiche un texte en clair lorsque le focus n'est pas lui et quand il n'y a pas rien le Password.

    Dans ce genre là:

    Nom : Passwordbox.png
Affichages : 79
Taille : 1,6 Ko

    Pour le moment j'étais parti d'une idée toute bête, un PasswordBox et un label ou Textblock par dessus.
    Masquer ce dernier quand l'on a le focus ou que la souris le survol, mais je n'ai pas pensé que l'objet Label est au dessus du PasswordBox et donc je n'y accède pas.


    Si vous avez une idée, merci.

    [EDIT]
    Je suis arrivé a un fonctionnement, en utilisant le Double click du Label qui me masque ce même label avec Collapsed, puis un MousseLeave sur le PassewordBox qui me reactive le label si password est vide, mais bon c'est Double click, et c'est pas tiptop. Il y a surement mieux.

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,

    Vous devez rechercher : WatermarkPasswordBox
    Un lien intéressant : https://github.com/xceedsoftware/wpf...arkPasswordBox

  3. #3
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 927
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Bonjour,

    Vous devez rechercher : WatermarkPasswordBox
    Un lien intéressant : https://github.com/xceedsoftware/wpf...arkPasswordBox

    Bonjour Sankasssss,

    Merci pour l'information c'est noté.

    Entre temps j'ai réussi à faire ce que je voulais en bidouillant un peu à l'aide des Interaction.Triggers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
                            <Grid Margin="0,5,0,0">
                                <PasswordBox Name="TXT_PasswordAdvanced"
                                             Margin="5,0,5,0" FontSize="16"
                                             Height="25"
                                             Background="{Binding TXT_PassWord_BackGround,FallbackValue='White'}"
                                             Foreground="{Binding TXT_Password_ForeGround, FallbackValue='Gray'}"
                                             PasswordChanged="TXT_PasswordAdvanced_PasswordChanged"
                                             MouseLeave="TXT_PasswordAdvanced_MouseLeave"/>
                                <TextBlock x:Name="LBL_Password" 
                                       Text="{Binding LBL_Password_Text, FallbackValue='Mot de passe' }"
                                       FontSize="12" Foreground="{Binding LBL_Password_ForeGround, FallbackValue='Gray'}"
                                       FontFamily="{Binding CMD_Menu_FontFamily, FallbackValue='Roboto'}"
                                       Visibility="{Binding LBL_Password_Visibility, FallbackValue='Visible'}"
                                       VerticalAlignment="Center" HorizontalAlignment="Center"
                                           IsVisibleChanged="LBL_Password_IsVisibleChanged"> 
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="MouseLeftButtonUp" >
                                            <i:InvokeCommandAction
                                                 Command="{Binding CMD_Password_MouseLeftButtonUp}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </TextBlock>
                            </Grid>
    En gros je capture une commande "MouseLeftButtonUp" à l'aide des Interaction, pour changer l'état de la visibilité du Texblock.

    ne pas oublier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
    Puis je capture dans le code behind, le changement de la visibilité, si elle est différente de visible, je met le focus sur la Passwordbox.


    Code VM (Model ICI):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
            private RelayCommand _CMD_Password_MouseLeftButtonUp;
            public RelayCommand CMD_Password_MouseLeftButtonUp
            {
                get
                {
                    if (_CMD_Password_MouseLeftButtonUp == null)
                    {
                        _CMD_Password_MouseLeftButtonUp = new RelayCommand(
                            param => this.CMD_Password_Execute(),
                            param => this.CMD_Password_CanExecute()
                        );
                    }
                    return _CMD_Password_MouseLeftButtonUp;
                }
            }
            private bool CMD_Password_CanExecute()
            {
                return true;
            }
            private void CMD_Password_Execute()
            {
                if (LBL_Password_Visibility == Visibility.Visible)
                {
                    LBL_Password_Visibility = Visibility.Collapsed;
                }
                else
                {
                    LBL_Password_Visibility = Visibility.Visible;
                }
            }

    Code Behind:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
            private void LBL_Password_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
            {
                if(LBL_Password.Visibility != Visibility.Visible)
                {
                    TXT_PasswordAdvanced.Focus();
                }
            }
     
            private void TXT_PasswordAdvanced_MouseLeave(object sender, MouseEventArgs e)
            {
                if (TXT_PasswordAdvanced.Password == "")
                {
                    model.LBL_Password_Visibility = Visibility.Visible;
                }
            }
    C'est peut être un peu de bidouille, mais vu que j'avais Microsoft.behaviors déjà, cela fonctionne bien.

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

Discussions similaires

  1. [XL-2003] Copie du résultat de Autofilter lorsqu'il est vide
    Par JM741 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2013, 15h12
  2. page blanche apres submit lorsque password est vide
    Par monlou dans le forum Langage
    Réponses: 11
    Dernier message: 21/08/2010, 19h32
  3. Réponses: 7
    Dernier message: 29/05/2007, 12h07
  4. Réponses: 8
    Dernier message: 01/03/2007, 22h32
  5. [VBA-E] masquer une combo lorsqu'elle est vide
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 46
    Dernier message: 04/02/2007, 21h16

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