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 :

Enum en parametre d'un converter


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut Enum en parametre d'un converter
    Bonjour,

    J'ai crée un converter qui fonctionne très bien, le seul problème est une duplication de l'enumération pour pouvoir passer en paramètre du converter
    le code de chaque enum.

    Y aurait-il un moyen de ne pas faire cette duplication.

    Merci.

    Le XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Window.Resources>
            <local:EnumToChecked x:Key="myEnumToChecked"/>
        </Window.Resources>
            <StackPanel>
                <CheckBox Content="Un" IsChecked="{Binding Path=TypeEnum ,Converter={StaticResource myEnumToChecked},ConverterParameter={x:Static local:Window1 .CODE_UN}}"/>
                <CheckBox Content="Deux" IsChecked="{Binding Path=TypeEnum ,Converter={StaticResource myEnumToChecked},ConverterParameter={x:Static local:Window1 .CODE_DEUX}}"/>
                <CheckBox Content="Trois" IsChecked="{Binding Path=TypeEnum ,Converter={StaticResource myEnumToChecked},ConverterParameter={x:Static local:Window1 .CODE_TROIS}}"/>
            </StackPanel>
    Le 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
     
     public partial class Window1 : Window
        {
            //Duplication
            public const MyEnum CODE_UN = Obj.MyEnum.Un;
            public const MyEnum CODE_UN = Obj.MyEnum.Deux;
            public const MyEnum CODE_UN = Obj.MyEnum.Trois;
     
     
            public Window1()
            {
                InitializeComponent();
                Obj obj = new Obj();
                DataContext = obj;
            }
        }
    La classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Obj
        {
            public MyEnum TypeEnum {get;set;}
            public enum MyEnum
            {
                Un,
                Deux,
                Trois
            }
        }

  2. #2
    Membre Expert
    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
    Par défaut
    si j'ai bien compris tu veux passer une valeur par defaut
    si c'est le cas tu n'as pas d'autres solution
    ton converter recois dans l'objet la valeur courante et dans la paramètre la valeur par défaut

    sinon je vois pas trop ce que tu veux faire

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Salut ikeas,

    Citation Envoyé par ikeas Voir le message
    si j'ai bien compris tu veux passer une valeur par defaut
    En paramètre, oui c'est ça.


    si c'est le cas tu n'as pas d'autres solution
    Apparemment non, je ne vois pas moi non plus.

    Quelqu'un aurait une idée ?

  4. #4
    Membre Expert
    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
    Par défaut
    si je viens de penser a un truc voila ce que tu peux faire mais c'est tordu
    tu flag ton enum sur un int ou un long
    du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [Flags()]
     public enum MyEnum as long
            {
                Un = 0x00000001,
                Deux  = 0x00000002,
                Trois =  = 0x00000004,
                DUn = 0x01000000,
                DDeux  = 0x02000000,
                DTrois =  = 0x04000000,
            }
    et la tu aurais a la fois le paramètre par defaut et la valeur courante avec
    MyEnum toto = MyEnum.Un | MyEnum.DUn;

    mais je te l'avais dit c'est tordu

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    De mon coté, je ne suis pas sur d'avoir saisi ton pb: tu pourrais réexpliqué ? Cela permettra p-e d'avoir d'autres avis

  6. #6
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Bonjour,

    Je ne suis pas sur d'avoir bien compris non plus, mais tu n'as pas besoin de passer par des redéclarations dans window1 pour utiliser tes valeurs d'enum, tu peux référencer directement les valeurs, c'est juste que la syntaxe avec le '+' n'est pas forcément évidente à trouver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       <CheckBox Content="Un" IsChecked="{Binding Path=TypeEnum ,Converter={StaticResource myEnumToChecked},ConverterParameter={x:Static local:Obj+MyEnum.Un}}"/>

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

Discussions similaires

  1. Réponses: 23
    Dernier message: 05/11/2013, 01h28
  2. Enum, convert et transtypage
    Par kheironn dans le forum C#
    Réponses: 4
    Dernier message: 01/04/2010, 14h09
  3. Spécialisation de template parametre avec Enum
    Par 3DArchi dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2008, 15h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15

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