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

C# Discussion :

Question de curiosité


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut Question de curiosité
    Bonjour à tous.

    Une question me taraude depuis que j'ai récupérer un morceau de code sur la toile.

    Le morceau de code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [ValueConversion(typeof(bool), typeof(System.Windows.Visibility))]
    public class VisibilityConverter : IValueConverter
    {
        ...
    }
    A quoi peut donc bien servir la première ligne ? Sachant que si je l'enlève, mon programme fonctionne toujours correctement...

    La classe permet de convertir une valeur booléenne en une valeur d'énumération, pour permettre un data binding en WPF.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    J'ai regardé vite fait la doc MSDN et ce n'est vraiment clair.

    Pour savoir, je dirais : essaye de tester ton converter en envoyeant un autre type que bool (pas un int non plus) avec la ligne et ensuite sans la ligne. Ensuite regarde quelle erreur est obtenue et quand.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Si je bind mon convertisseur sur un champ texte, j'ai une exception logique sur la ligne "bool state = (bool)value;" (que j'ai ma première ligne bizarre ou pas...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public class VisibilityConverter : IValueConverter
        {
            public object Convert(object value, Type targetType,
                object parameter, CultureInfo culture)
            {
                bool state = (bool)value;
                ...
            }
    }
    Donc j'ai comme l'impression que c'est uniquement à titre informatif que cette ligne est présente, mais c'est un peu tordu comme information ^^ Pas vraiment facile à lire...

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    C'est un attribut, en gros ca sert à décrire une classe/méthode/propriété pour son utilisation. Pour accéder à ces infos il faut utiliser la réflexion.

    Par exemple j'utilise les attribut pour paramétrer l'index csv à sortir pour des propriétés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [csvIndex(15)]
    pubic string NomASortirCsv;
    Voila.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Ok ok

    Par contre j'ai déjà entendu ou lu le terme "csv" mais je ne me suis jamais penché dessus à vrai dire... j'y penserai un jour ^^

    @tomlev : j'avoue que je n'aurais pas imaginé que ça existait ^^ sauf que le comportement est exactement l'inverse de celui que je veux :s
    Je peux demander l'inverse de la propriété dans le binding ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <TextBlock Visibility="{Binding CanBeSaved,
                               Converter={StaticResource visibilityConverter}}"

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par MiniCesc Voir le message
    Par contre j'ai déjà entendu ou lu le terme "csv" mais je ne me suis jamais penché dessus à vrai dire... j'y penserai un jour ^^
    CSV = Comma Separated Value (valeurs séparées par des virgules)
    Strictement rien à voir avec ta question, si ce n'est que csvIndex est un attribut, tout comme VisibilityConverter...

    Citation Envoyé par MiniCesc Voir le message
    @tomlev : j'avoue que je n'aurais pas imaginé que ça existait ^^ sauf que le comportement est exactement l'inverse de celui que je veux :s
    Je peux demander l'inverse de la propriété dans le binding ?
    C'est à dire ? tu veux que le contrôle soit masqué quand la propriété vaut True ?

    Il n'y a pas de façon simple d'indiquer ça dans le binding, le plus facile c'est de créer une autre propriété qui renvoie l'inverse :


    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 bool _canBeSaved;
    public bool CanBeSaved
    {
        get { return _canBeSaved; }
        set
        {
            _canBeSaved = value;
            OnPropertyChanged("CanBeSaved");
            OnPropertyChanged("CannotBeSaved");
        }
    }
     
    public bool CannotBeSaved
    {
        get { return !CanBeSaved; }
    }

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par MiniCesc Voir le message
    Donc j'ai comme l'impression que c'est uniquement à titre informatif que cette ligne est présente, mais c'est un peu tordu comme information ^^ Pas vraiment facile à lire...
    Oui, c'est juste à titre informatif. Par contre je ne vois pas en quoi c'est difficile à lire... ça indique le type source et le type destination : ce convertisseur sert donc à convertir une valeur de type bool en valeur de type System.Windows.Visibility

    Soit dit en passant, ce bout de code ne sert strictement à rien : il y a déjà un convertisseur qui fait exactement la même chose dans le framework.

    BooleanToVisibilityConverter

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

Discussions similaires

  1. [XL-2007] Variable utilisée dans une fiormule - Question de curiosité
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2015, 14h35
  2. Réponses: 4
    Dernier message: 10/09/2009, 17h30
  3. [W3C] Question de curiosité à propos des balises non cross-browser
    Par chuckey dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 22/03/2009, 20h04
  4. question curiosité ofstream ifstream
    Par hibiscuit dans le forum C++
    Réponses: 7
    Dernier message: 20/09/2007, 15h18
  5. Question de curiosité sur du code
    Par defluc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/09/2007, 16h12

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