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

cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 12 mars 2018 à 21:50 - Dernière réponse : cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

4 réponses

Whismeril 11533 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 13 mars 2018 à 07:24
0
Utile
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.
Commenter la réponse de Whismeril
cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 13 mars 2018 à 15:03
0
Utile
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
Commenter la réponse de cs_JMO
Whismeril 11533 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 15 mars 2018 à 00:14
0
Utile
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.
Commenter la réponse de Whismeril
cs_JMO 1850 Messages postés jeudi 23 mai 2002Date d'inscription 11 mai 2018 Dernière intervention - 15 mars 2018 à 20:37
0
Utile
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
Commenter la réponse de cs_JMO

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.