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 :

Binder avec propriété d'un parents


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 118
    Par défaut Binder avec propriété d'un parents
    Bonjour,

    Voici mon code:
    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
     
    <TreeView x:Name="playlist" Grid.Row="1" ItemsSource="{Binding Playlist}">
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding file}">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock x:Name="Name"  Text="{Binding Name}" Margin="0,0,10,0"/>
                            <Button Content="add" Command="{Binding Path=DataContext.Add_file, ElementName=playlist}"
                                    CommandParameter="{Binding ElementName=Name, Path=Text}">
                            </Button>
     
                        </StackPanel>
                        <HierarchicalDataTemplate.ItemTemplate>
                            <DataTemplate>
                                <TextBlock x:Name="File_name" Text="{Binding}">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="MouseLeftButtonUp">
                                            <i:InvokeCommandAction Command="{Binding Path=DataContext.Current_playlist, ElementName=playlist}"
                                                                   CommandParameter="{Binding ElementName=Name,Path=Text}">
     
                                            </i:InvokeCommandAction>
                                        </i:EventTrigger>
                                        <i:EventTrigger EventName="MouseLeftButtonUp">
                                            <i:InvokeCommandAction Command="{Binding Path=DataContext.Lecture, ElementName=playlist}"
                                                                   CommandParameter="{Binding ElementName=File_name,Path=Text}"></i:InvokeCommandAction>
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </TextBlock>
                            </DataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
    Voila mon premier eventtrigger ne marche pas. J'essaye d'envoyer la valeur de mon textblock nommé "Name"(juste au dessus). Cependant il me dit qu'il ne trouve pas ce nom.
    Je sais que le problème viens de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <TextBlock x:Name="File_name" Text="{Binding}">
    Le Binding change le datacontext. Je ne sais pas comment mettre le datacontext du parent.

    Si vous pouviez m'aider, merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    il faut utiliser un RelativeSource / FindAncestor à la place du ElementName:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 15
    Par défaut
    Le problème c'est que le le textblock qui m’intéresse est DANS un ancêtre, c'est un cousin en gros xD, donc il faudrait dans un premier temps utiliser le findancestor pour arriver jusqu’au StackPanel puis ensuite rentrez a l’intérieur pour atteindre le textblock. (c'est le compte d'un ami, sinon c'est bien shirohige qui a repondu)

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Il ne faut pas binder le Text du TextBlock mais le Name du DataContext qui est commun au StackPanel et au TextBlock.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 118
    Par défaut
    Désolé j'ai rien compris, je suis obligé de faire (il faut savoir que je débute ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandParameter="{Binding Path=Text,...}
    puisque c'est la propriété Text qui m'intéresse.
    mais le Name du DataContext qui est commun au StackPanel et au TextBlock
    Mon textblock est dans mon Stackpanel.
    Si le datacontext devient celui de mon StackPanel je pourrait y accéder ? c'est ça que vous voulez dire ? Si oui, je ne sais pas comment faire.
    DataContext=.... peu-être.

  6. #6
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Citation Envoyé par shirohige Voir le message
    c'est la propriété Text qui m'intéresse.
    La propriété Text est bindée sur le Name. Donc il vaut mieux accèder au Name directement.

    Citation Envoyé par shirohige Voir le message
    Mon textblock est dans mon Stackpanel.
    Donc ils partagent le même contexte.

    Donc DataContext.Name avec la source récupérée en relative source.

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

Discussions similaires

  1. Binder avec propriété d'un parents
    Par shirohige dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 09/06/2014, 17h31
  2. Binder la propriété IsEnabled d'un bouton avec un trigger sur une textbox
    Par Will Fou dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 04/09/2012, 10h42
  3. [VB.NET] ListView Problème avec propriété View à 'List'
    Par elkidos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/08/2006, 18h10
  4. [VB6] probléme avec propriété ActiveX
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/06/2006, 17h51
  5. Réponses: 6
    Dernier message: 27/10/2005, 17h38

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