Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    maa
    maa est déconnecté
    Membre confirmé
    Avatar de maa
    Inscrit en
    octobre 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : octobre 2005
    Messages : 647
    Points : 231
    Points
    231

    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 :
    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 168
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : octobre 2002
    Messages : 9 168
    Points : 18 619
    Points
    18 619

    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 confirmé
    Avatar de maa
    Inscrit en
    octobre 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : octobre 2005
    Messages : 647
    Points : 231
    Points
    231

    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 :
    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 168
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : octobre 2002
    Messages : 9 168
    Points : 18 619
    Points
    18 619

    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 confirmé
    Avatar de maa
    Inscrit en
    octobre 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : octobre 2005
    Messages : 647
    Points : 231
    Points
    231

    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 168
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : octobre 2002
    Messages : 9 168
    Points : 18 619
    Points
    18 619

    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 confirmé
    Avatar de maa
    Inscrit en
    octobre 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : octobre 2005
    Messages : 647
    Points : 231
    Points
    231

    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 confirmé
    Avatar de maa
    Inscrit en
    octobre 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : octobre 2005
    Messages : 647
    Points : 231
    Points
    231

    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
    Invité de passage
    Inscrit en
    août 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : août 2011
    Messages : 3
    Points : 1
    Points
    1

    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 :
    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •