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

Silverlight Discussion :

Binding de RelayCommand sur Polygon dans un IntemsControl


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut Binding de RelayCommand sur Polygon dans un IntemsControl
    Bonjour à tous,

    Je souhaite pouvoir lier une propriété de type RelayCommand aux Polygon générés par mon ItemsControl, ce que je ne parviens pas à faire.

    Voici le xaml:
    Code xml : 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
     
    <ItemsControl DataContext="{Binding Source={StaticResource LocatorVM}, Path=Wm1 }" ItemsSource="{Binding ListPolygon}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <Canvas/>
                        </ItemsPanelTemplate>               
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
     
                                <Polygon Points="{Binding Coordinates}" Fill="Red" >
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="MouseLeftButtonDown">
                                            <cmd:EventToCommand Command="{Binding AddDefaultCmd}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </Polygon>
     
                        </DataTemplate>              
                    </ItemsControl.ItemTemplate>
                </ItemsControl>

    Quand je le fais sur un Button cela fonctionne parfaitement, il appel bien ma méthode!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Button DataContext="{Binding Source={StaticResource LocatorVM}, Path=Wm1 }" Content="Add default" Command="{Binding AddDefaultCmd}"/>
    Je crois que je ne m'y prend pas de la bonne façon.

    Merci par avance pour vos éclaircissements.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Que veux-tu faire plus exactement ?
    Tu veux lier un évènement ou une donnée de ton Polygon ?

  3. #3
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Je souhaite lié une méthode à l'événement MouseLeftButtonDown et cela pour tous les Polygon générés par l'ItemsControle.

    Voici ma propriété de type relayCommand et ma méthode
    Code c# : 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
     
            private RelayCommand addDefaultCmd;
     
            public RelayCommand AddDefaultCmd
            {
                get
                {
                    if (addDefaultCmd == null)
                    {
                        addDefaultCmd = new RelayCommand(AddDefault);
                    }
                    return addDefaultCmd;
                }
                //set { addDefaultCmd = value; }
            }
     
     
            private void AddDefault()
            {
     
                this.listDefault.Add(new Default()
                {
                    X = 50,
                    Y = 50
                });
             }

    Merci pour ton aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ta commande se trouve dans quelle classe ? dans le ViewModel de l'Item ou autre part (à la racine du ViewModel principal par exemple) ?

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Dans le ViewModel Wm1 instancié dans mon LocatorVM.
    D'ailleurs au même niveau que la propriété ListPolygon liée à mon ItemsSource.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Utilises ceci en remplaçant par les valeurs adéquates pour AncestorType et AncestorLevel :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    Command="{Binding DataContext.AddDefaultCmd, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type tu mets ici le type de l'élément qui contient le DataContext où est défini AddDefaultCmd}, AncestorLevel="tu mets ici le niveau en partant du bas"}"

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

Discussions similaires

  1. Binding sur textbox dans usercontrol
    Par davidpl dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 07/11/2014, 12h17
  2. [DBGRID] Comment coloriser 1 ligne sur 2 dans un DBGRID
    Par did85 dans le forum Bases de données
    Réponses: 28
    Dernier message: 26/10/2011, 15h22
  3. Binding sur "Items" dans le GroupStyle qui ne se met pas à jour si plusieurs items
    Par strat0 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 11/05/2009, 10h47
  4. [VB6] Obtenir +sieurs lignes sur RptTextBox dans un DataReport
    Par Babaframy dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/01/2004, 12h10
  5. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42

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