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 :

ListView numero des lignes


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut ListView numero des lignes
    Bonjour

    J'ai une listView :

    <ListView Name="unitListView" Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="5" Margin="0,5,0,0" ItemsSource="{Binding Source={StaticResource ProductObjectDataProvider},Path=ProductUnitCollection}" ItemContainerStyleSelector="{StaticResource ListViewItemStyleSelector}" >
    <ListView.Resources>
    <Style TargetType="{x:Type TextBox}">
    <Setter Property="VerticalAlignment" Value="Center" />
    </Style>
    </ListView.Resources>
    <ListView.View>
    <GridView x:Name="myGridView">
    <GridViewColumn Header="Valeur" CellTemplate="{StaticResource ValeurComboBoxTemplate}"/>
    <GridViewColumn Header="Conversion" CellTemplate="{StaticResource ConversionTemplate}"/>
    <GridViewColumn Header="Ratio" CellTemplate="{StaticResource RatioTemplate}"/>
    </GridView>
    </ListView.View>
    </ListView>


    J'aimerai ajouter une colonne qui affiche le numéro de l'item.
    un truc du genre :

    <GridViewColumn Header="numero de la ligne" DisplayMemberBinding="{Binding ElementName=unitListView, Path=ListViewItem , Converter={StaticResource rowConverter}}" />

    Seulement je ne sais pas sur quoi je dois binder sur la listview pour avoir le numéro de la ligne.

    Merci de ton aide.
    Amandine

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Si, sur ton ProductObjectDataProvider, tu pouvais avoir une liste représentant ces numéros (1, 2, 3, etc..), tu pourrais te binder dessus

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    oui j'ai bien une collection, j'ai essayé de me binder dessus mais je ne sais pas quel est mon courant. Tu vois ce que je veux dire?
    Dans ce cas là je suis obligée d'utiliser un converter pour voir sur quel item je suis.
    Je me demandais si il n'y avait pas quelque chose de plus simple.

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    Voilà j'ai suivi ton conseil, mais maintenant que je me retrouve à une collection comme "value" de mon converter qu'est ce que j'en fait?!!
    Merci pour ton aide.


    <GridViewColumn Header="Unité de Mesure" DisplayMemberBinding="{Binding ElementName=unitListView, Path=ItemsSource , Converter={StaticResource rowConverter}}" />
    <local:NumeroLigneConverter x:Key="rowConverter"/>



    public class NumeroLigneConverter : IValueConverter
    {
    int numeroLigne = 0;
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
    return value;
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    { throw new Exception("The method or operation is not implemented."); }
    }

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Je ne pense pas que tu ais compris ce que je veux dire: relie bien mon message

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    Finalement j'ai ajouté un attribut "position" à mon objet et j'ai surchargé les méthodes InsertItem, et RemoveItem de ma collection d'objet. Du coup je binde directement ma colonne sur l'attribut postion.


    public class FMProductPrice : INotifyPropertyChanged
    {

    ....
    private int position;

    ....
    public int Position
    {
    get { return position; }
    set
    {
    position = value;
    this.RaisePropertyChanged("Position");
    }
    }
    }


    public class FMProductPriceCollection : ObservableCollection<FMProductPrice>
    {
    protected override void InsertItem(int index, FMProductPrice item)
    {
    base.InsertItem(index, item);
    item.Position = this.Count;
    }

    protected override void RemoveItem(int index)
    {
    for (int i = index; i < this.Items.Count; i++)
    {
    this[i].Position--;
    }
    base.RemoveItem(index);
    }
    }

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

Discussions similaires

  1. Afficher numero des lignes
    Par Lostincode dans le forum C#
    Réponses: 3
    Dernier message: 18/06/2013, 16h03
  2. Réponses: 3
    Dernier message: 12/03/2008, 09h54
  3. affichage des numeros de lignes et couleurs des parenthèses
    Par deubelte dans le forum Visual C++
    Réponses: 1
    Dernier message: 04/09/2007, 11h40
  4. Réponses: 1
    Dernier message: 07/09/2006, 19h56
  5. [VB.NET]Hauteur des lignes d'un listview
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/05/2006, 09h01

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