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

C# Discussion :

[WPF] Séléctionner la ligne de la gridView parente d'un sous control.


Sujet :

C#

  1. #1
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut [WPF] Séléctionner la ligne de la gridView parente d'un sous control.
    Bonjour,

    J'ai une listView qui contient une GridView qui elle contient des colonnes dans lesquelles il y a des TextBox :
    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
     
            <ListView Margin="14,38,0,106" Name="lvwUnasignedGroups" ItemsSource="{Binding Path=UnassignedGroups}" HorizontalAlignment="Left" Width="300" SelectionChanged="lvwUnasignedGroups_SelectionChanged">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="nom (fr)" Width="140">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox Text="{Binding Path=Name.FRA}" GotFocus="TextBox_GotFocus" />
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="nom (de)" Width="140">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox Text="{Binding Path=Name.DEU}" GotFocus="TextBox_GotFocus" />
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
    J'aimerais que quand un TextBox gagne le focus, la ligne de la listview dans laquelle il se trouve se sélectionne et inversement quand il perd le focus. L'idéal serait de le faire par binding... sinon j'ai essayé de le faire par événement mais je ne vois pas comment dire de sélectionner la ligne de la listview contenant mon TextBox sender. Quelqu'un saurait comment faire cela ?

    merci
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Avec les évènements, tu ne peux pas parcourir l'arbre qui compose tes Templates ?

  3. #3
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    peut être, mais je vois pas trop comment faire.
    J'ai écris cela dans la méthode de gestion de l'événement GotFocus() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                (((GridView)((TextBlock)sender).Parent)
    Mais après je vois pas de méthode de GridView qui permettent de donner le focus à une ligne...
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essayer de mettre ton textblock dans un canvas et sur le clic, tu changes la couleur de ce canvas

  5. #5
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Non mais je ne veux pas donner l'illusion que la ligne de ma listview soit sélectionnée, je veux qu'elle le soit vraiment (J'applique ensuite des actions sur la ligne sélectionnée). Y a t-il un moyen de retrouver la ligne de la listview qui contient l'élément TextBox qui a le focus ?
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Arrives-tu au moins à récupérer la TextBox qui a le focus ? Si oui, en utilisant la méthode que j'ai mis sur mon blog, tu devrais pouvoir retrouver les parents, un à un, dans la hierarchie et ainsi tu arriveras sans doute à la ligne qui t'intéresse....

  7. #7
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Arrives-tu au moins à récupérer la TextBox qui a le focus ?
    Oui pas de problème avec l'événement GotFocus.

    PAr contre je n'arrive pas à récupérer la ligne qui contient ce textbox. Je me demande même si il existe un ancêtre de l'objet TextBox qui correspond à une ligne de mal listView...
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  8. #8
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Je bute toujours sur ce problème sans trouver de solution. Si quelqu'un a une idée, ça m'aiderait beaucoup.
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  9. #9
    Candidat au Club
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je rencontre le même problème avec des radiobuttons à la place des textBox.

    j'ai réussit à le résoudre en utilisant les parents et les templatedParent pour atteindre Le premier ListViewItem dans la hiérarchie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <RadioButton GroupName="{Binding Path=identifiant}" IsChecked="{Binding Path=pour, Mode=TwoWay}" HorizontalAlignment="Center" Click="RadioButton_Click"/>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    ensuite sur l'événement clic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ContentPresenter cp = ((sender as RadioButton).TemplatedParent as ContentPresenter);
    GridViewRowPresenter gvrp = cp.Parent as GridViewRowPresenter;
    ListViewItem lvi = gvrp.TemplatedParent as ListViewItem;
    lvi.IsSelected = true;
    remarque : lors de l'examen des variable local pendant l'exécution, il est possible d'avoir accès, par l'intermédiaire de la loupe sur la ligne de la variable examinée, à une fenêtre nommé WPF Tree Visualizer.

Discussions similaires

  1. Réponses: 10
    Dernier message: 25/06/2008, 13h54
  2. Réponses: 10
    Dernier message: 06/07/2006, 10h29
  3. Réponses: 2
    Dernier message: 09/06/2006, 12h31
  4. Réponses: 1
    Dernier message: 17/05/2006, 09h19
  5. [VB.Net][2.0] Obtenir l'index d'une ligne d'un GridView
    Par Cyrilange dans le forum ASP.NET
    Réponses: 1
    Dernier message: 29/12/2005, 16h55

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