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 :

Comment binder un menu contextuel avec un datagrid?


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Billets dans le blog
    1
    Par défaut Comment binder un menu contextuel avec un datagrid?
    Bonjour à tous, je sèche sur un binding extrêmement

    J'ai un datagrid qui est bindé sur un dataviewmodel.
    Je dois mettre un menu contextuel pour chaque ligne du datagrid.

    Comment faire? Où dois-je ajouter mon menu contextuel?
    Est-ce que je dois le mettre comme ceci?
    Le soucis est que je ne parviens pas atteindre mon datagrid afin d'avoir le VM qui contient une commande à exécuter quand je clique sur ce menu. Hors le binding ne marche par car Il dit "BindingExpression_CannotFindAncestor", pourant le datagrid est un ancêtre non?

    Merci pour toute aide!

    Bonne fêtes aussi


    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
    32
    33
    34
    35
    36
     
     
            <sdk:DataGrid ItemsSource="{Binding FilteredMedias}" x:Name="Nico" IsReadOnly="True" AutoGenerateColumns="False" Grid.Column="2">
     
     
     
     
                <sdk:DataGrid.Columns>
     
     
     
                    <sdk:DataGridTemplateColumn>
     
                    <sdk:DataGridTemplateColumn Header="Id">
     
                        <sdk:DataGridTemplateColumn.CellTemplate>
     
                            <DataTemplate>
     
                                <StackPanel>
                                    <TextBlock Text="{Binding MediaId}"/>
     
                                    <toolkit:ContextMenuService.ContextMenu>
                                        <toolkit:ContextMenu Width="250">
                                            <toolkit:MenuItem Header="Ajouter une page racine" Command="{Binding Path=DataContext.MoveItemUpCommand, RelativeSource={ RelativeSource AncestorType=sdk:DataGrid}}" CommandParameter="{Binding}">
                                                <toolkit:MenuItem.Icon>
                                                    <Image Source="/MAF.Internet.UI.RIA.Main;component/Images/TreeView/add-folder.png"/>
                                                </toolkit:MenuItem.Icon>
                                            </toolkit:MenuItem>
                                        </toolkit:ContextMenu>
                                    </toolkit:ContextMenuService.ContextMenu>
     
                                </StackPanel>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                    </sdk:DataGridTemplateColumn>

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    Oui mais non: la datagrid n'est pas un ancêtre car ton contextMenu est dans un DataTemplate son ancêtre le plus haut est donc ton StackPanel. A ma connaissance (mais je serais ravi que l'on me détrompe) il n’est pas possible en XAML d’accéder au parent d’un Template a partir d’un élément du Template.
    Dans ce genre de cas je gère la commande en code-behind ou je me débrouille pour qu’elle soit dans le datacontext de l’item.
    Cordialement

  3. #3
    Membre éclairé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Billets dans le blog
    1
    Par défaut
    Merci pour ta réponse Cela serait bien de trouver un élément de documentation sur ce soucis. Je pensais que l'on pouvait accéder à l'élément racine quelque soit l'endroit....

    Si quelqu'un peut nous éclaircir avec des références de documentation cela serait bien et encore mieux si on a des éléments de réponse

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 54
    Par défaut
    Hey,

    ce que tu peux faire, au lieu de vouloir atteindre ton element parent, c'est directement pointer sur ton ViewModel vu que ton Locator est accessible partout.

    { Binding MonVM.MaRelayCommand,Source={StaticResource Locator}}

    Voila,

Discussions similaires

  1. Comment supprimer un Menu contextuel personnalisé ?
    Par evlp2004@hotmail.com dans le forum Access
    Réponses: 2
    Dernier message: 10/04/2008, 16h24
  2. Menu contextuel avec récupération de la valeur du champ cliqué
    Par lodan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/05/2007, 17h28
  3. Comment créer un menu personnalisé avec Access2007
    Par marionAccess dans le forum Access
    Réponses: 6
    Dernier message: 24/01/2007, 16h29
  4. Menu contextuel avec les API
    Par guen dans le forum Access
    Réponses: 6
    Dernier message: 14/09/2006, 23h42
  5. Réponses: 1
    Dernier message: 31/07/2005, 17h44

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