Comment lier un ComboBox à un dictionnaire générique via ObjectDataProvider

Je veux remplir un ComboBox avec des données de clé / valeur dans le code derrière, j’ai ceci:

XAML:

        

Code derrière:

 using System.Windows; using System.Collections.Generic; namespace TestCombo234 { public partial class Window1 : Window { public Window1() { InitializeComponent(); } } public static class CollectionData { public static Dictionary GetChoices() { Dictionary choices = new Dictionary(); choices.Add(1, "monthly"); choices.Add(2, "quarterly"); choices.Add(3, "biannually"); choices.Add(4, "yearly"); return choices; } } } 

Mais cela me donne ceci:

alt text http://img193.imageshack.us/img193/9218/choices.png

Que dois-je changer pour que la clé soit l’int et la valeur la chaîne?

Pour append votre ComboBox

 SelectedValuePath="Key" DisplayMemberPath="Value" 

Il y a un moyen plus facile.

Convertissez l’énumération en un object Generic.Dictionary. Par exemple, supposons que vous vouliez une combo avec le jour de la semaine (convertissez simplement le VB en C #)

 Dim colWeekdays As New Generic.Dictionary(Of FirstDayOfWeek, Ssortingng) For intWeekday As FirstDayOfWeek = vbSunday To vbSaturday colWeekdays.Add(intWeekday, WeekdayName(intWeekday)) Next RadComboBox_Weekdays.ItemsSource = colWeekdays 

Dans votre XAML, il suffit de définir les éléments suivants pour lier un object:

 SelectedValue="{Binding Path= StartDayNumberOfWeeek}" SelectedValuePath="Key" DisplayMemberPath="Value" /> 

Le code ci-dessus peut facilement être généralisé en utilisant la reflection pour gérer les énumérations.

J’espère que cela t’aides