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 :

[Binding] Comment binder 2 sources sur un seul Control ?


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de adrienfehr
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 203
    Par défaut [Binding] Comment binder 2 sources sur un seul Control ?
    Bonjour,

    Je souhaite binder un control sur deux sources différentes.

    Je m’explique :
    j’ai deux optionButton, suivant la sélection un seul control affichera les données d’une sources A ou d’une sources B.

    J’avais penser faire une propriété « Source » avec un get renvoyant :
    If(optionButtonA.Checked) return var1
    If(optionButtonB.Checked) return var2

    Mais cela ne fonctionne pas.

  2. #2
    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
    Citation Envoyé par adrienfehr Voir le message
    Bonjour,

    Je souhaite binder un control sur deux sources différentes.
    Idée en l'air: Tu as essayé le multibinding ?

  3. #3
    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
    un exemple simple pour le multibinding

    la j'active ou desactive un dockpanel en fonction de deux sources
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <DockPanel.IsEnabled>
                                    <MultiBinding Converter="{StaticResource EnabledConverter}">
                                        <Binding Source="{StaticResource Controller}" Path="Equipments.IsConnected" />
                                        <Binding Source="{StaticResource Controller}" Path="SupController.IsConnected" />
                                    </MultiBinding>
                                </DockPanel.IsEnabled>
    et voici le code du multiconverter

    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
     
       #region EnabledConverter
        //--------------------------------------------------------------------------
        public class EnabledConverter : IMultiValueConverter
        {
            //--------------------------------------------------------------------------
            public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                try
                {
                    bool eq = (bool)(values[0]);
                    bool sup = (bool)(values[1]);
                    if (parameter as string == "MENU")
                        return !(eq || sup);
                    else
                        return (eq & !sup);
                }
                catch { }
                return true; 
            }
            //--------------------------------------------------------------------------
            public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotSupportedException("Not supported");
            }
            //--------------------------------------------------------------------------
        }
    tu notera avec joie (je l'espere) que l'on peut aussi coller des parametres pour avoir un comportement different dans certains cas

  4. #4
    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
    Pour résumer, un multibinding avec un convertisseur, c'est un binding classique sauf que les méthodes Convert et ConvertBack du convertisseurs prennent en paramètres un tableau d'objets (et non plus un objet simple)

  5. #5
    Membre confirmé Avatar de adrienfehr
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 203
    Par défaut
    Merci cela fonctionne très bien. Le paramètre semble également réagir.

    Il me reste tout de même encore un problème : Setter le paramètre dynamiquement par rapport à un control.

    afin de coller à l'exemple ci-dessus, je me suis dit : ah tout simple, il me suffit de binder un TextBox ( ne fonctionne pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ConverterParameter="{Binding ElementName=txtTest,Path=Text}"

  6. #6
    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
    Ah non, il n'est pas possible de faire du binding sur le paramètre d'un binding.

Discussions similaires

  1. [Batch] comment mettre mon code sur une seule ligne
    Par fk04 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 17/03/2010, 13h01
  2. Filtre de binding source sur une trentaine de checkbox
    Par doudoustephane dans le forum Windows Forms
    Réponses: 12
    Dernier message: 31/05/2008, 00h31
  3. [WPF][Binding] Comment binder un fichier XML sur un treeview?
    Par bakonu dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 26/11/2007, 17h09
  4. Le code source s'affiche sur une seule ligne!
    Par Emcy dans le forum Général Conception Web
    Réponses: 10
    Dernier message: 06/12/2006, 09h12
  5. Réponses: 3
    Dernier message: 06/10/2006, 13h55

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