Insertion item dans une collection pour binding [Résolu]

Signaler
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Bonsoir le Forum,

Dans une appli WPF (ma 1ère) , est-il possible d'insérer un item dans une collection pour binding vers un combobox ???

Fichier XAML
        <ComboBox x:Name="ComboBoxCustomer"
                  ItemsSource="{Binding listofcustomer}"
                  Margin="0,5,0,0" 
                  Height="23" Width="250" HorizontalAlignment="Left" VerticalAlignment="Top" />

La classe
Imports System.Text.RegularExpressions

Public Class ExtractIDMON
    Public Sub New()
    End Sub

    Public Sub New(ByVal M As Match)
        Trigramme = M.Groups("trigramme").Value
        Client = M.Groups("client").Value.Replace("_", " ")
    End Sub

    Public Property Trigramme() As String
    Public Property Client() As String

    Public Overrides Function ToString() As String
        Return Trigramme & " - " & Client
    End Function
End Class


Création de la collection et insert combobox
        listofcustomer = (
            From l In toutesLesLignes
            Group l By l.Trigramme Into leGroup = Group Order By Trigramme
            Select New ExtractIDMON With {.Trigramme = leGroup.First().Trigramme,
                                          .Client = leGroup.First().Client}).ToList()

        ComboBoxCustomer.ItemsSource = listofcustomer
        ComboBoxCustomer.SelectedIndex = -1

En fait, je souhaiterai que le combobox contienne:

Tous les contrats ' item à insérer en tant qu'item cliquable
Contrat1
Contrat2...

En regardant mon appli initiale (en VB.Net), j'avais ajouté manuellement dans la propriété du combobox (Items / Collection):
Selection du contrat
Tous les contrats



Merci de vos conseils.

jean-marc

4 réponses

Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Salut Jean Marc
il faut que j'essaye (je ne me sers jamais de combobox en wpf), et en ce moment j'ai assez peu de temps.

Cependant, tu définis ItemSource dans le xaml et dans le cs.
Dans la mesure où tu ne bindes pas la fenêtre entière sur une vue, je pense que ceci serait plus juste
        <ComboBox x:Name="ComboBoxCustomer"
                  DataContext="{Binding}"
                  Margin="0,5,0,0" 
                  Height="23" Width="250" HorizontalAlignment="Left" VerticalAlignment="Top" />


Pour les 2 items ajoutés, je te réponds dès que possible.
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonjour Whismeril,

Tes conseils sont toujours les bienvenus !!!

J'ai donc modifié le xaml comme indiqué.

Je ne sais pas si c'est la meilleure méthode pour ajouter un item
        Dim listofcustomer As List(Of ExtractIDMON)
        Dim listofcombobox As New List(Of String)

        listofcustomer = (
            From l In toutesLesLignes
            Group l By l.Trigramme Into leGroup = Group Order By Trigramme
            Select New ExtractIDMON With {.Trigramme = leGroup.First().Trigramme,
                                          .Client = leGroup.First().Client}).ToList()

        listofcombobox.Add("Tous les contrats")
        For Each item In listofcustomer
            listofcombobox.Add(item.ToString)
        Next

        ComboBoxCustomer.ItemsSource = listofcombobox
        ComboBoxCustomer.SelectedIndex = -1


jean-marc
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Pour le texte « selectioner un truc » cette solution https://stackoverflow.com/a/16782339 me parait bien. Relis quand même plus haut pour voir d'où ça vient.

Pour « tous les contrats » pour l’instant ce qui me vient à l’esprit est d’ajouter un ExtractIDMON qui affiche ce texte. Mais ça me plait moyen.
Je continue à chercher.
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonsoir Whismeril,

Merci de ton lien et de ton temps consacré.
J'ai donc rajouté le textblock dans le fichier xaml.
Ne t'embête pas à chercher une alternative, la solution #2 me suffit amplement.
Je mets à résolu ce post.
Encore merci, bonne soirée et à + sur ce forum,

jean-marc