Bonjour,
J'ai une classe Person
1 2 3 4 5 6
| public class Person
{
public string location;
public string name;
...
} |
J'ai une liste, constituée de Person
1 2 3 4 5 6
| List<Person> list1 = new List<Person>()
{
new Person() { location = "Lyon", name = "Michel" },
new Person() { location = "", name = "Mario" },
new Person() { location = "Paris", name = "Michel" }
}; |
Dans un ComboBox, je veux afficher cette liste,sous la forme: nom (location). J'utilise donc un Converter...et jusqu'ici tout marche bien
1 2 3 4 5 6 7
| <ComboBox ItemsSource="{Binding list1}" IsSynchronizedWithCurrentItem="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource concatNameAndLoc}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Public Class ConcatNameAndOption
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
Dim valConv As Person = TryCast(value, Person)
Dim loc As String = valConv.Location
If loc <> "" Then
loc = " (" & loc & ")"
End If
Return valConv.Name & loc
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Return value
End Function
End Class |
Je vois donc dans le ComboBox les données affichées correctement:
Michel (Lyon)
Mario
Michel (Paris)
Maintenant voila mon soucis:
La personne sélectionnée est sauvée dans un fichier XML (<Person location="Paris">Michel</Person>) et je voudrais qu'au rechargement le ComboBox se place sur cette personne.
...que donc, la même concaténation appliquée à la personne "sauvée" soit retrouvée dans la liste concaténée de toutes les personnes
Comment binder le SelectedValue? J'ai bien tenté un
SelectedValue="{Binding Person, Converter={StaticResource concatNameAndOpt}, NotifyOnSourceUpdated=True}"
...mais qui ne débouche sur rien.
Merci de m'avoir lu jusqu'ici...et de votre aide éventuelle, j'espère avoir été clair dans mon explication.
Partager