Insertion item dans une collection pour binding

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - Modifié le 12 mars 2018 à 23:35
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 15 mars 2018 à 20:37
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

Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
13 mars 2018 à 07:24
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.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
13 mars 2018 à 15:03
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
0
Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
15 mars 2018 à 00:14
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.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
15 mars 2018 à 20:37
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
0
Rejoignez-nous