Wenn ein Wörterbuch aufgezählt wird, wird es KeyValuePair<TKey,TValue>
Objekte ergeben ... so müssen Sie nur „Value“ und „Key“ für DataTextField
und DataValueField
bzw. geben Sie die Value/Key Eigenschaften auszuwählen.
Dank Joe's Kommentar, habe ich die Frage erneut gelesen, um diese richtig zu machen. Normalerweise würde ich erwarten, dass der "Schlüssel" im Wörterbuch der angezeigte Text ist und der "Wert" der Wert ist, der abgerufen wird. Ihr Beispielcode verwendet sie jedoch umgekehrt. Es sei denn, Sie wirklich brauchen diese Art und Weise zu sein, möchten Sie vielleicht zu prüfen, Ihren Code wie das Schreiben:
(Und dann ändert sich die Bindung zu verwenden „Key“ für DataTextField
und „Value“ für DataValueField
, natürlich.)
In der Tat würde ich vorschlagen, dass, wie es scheint, Sie wirklich eine Liste eher als ein Wörterbuch wollen, möchten Sie vielleicht überdenken mit einem Wörterbuch an erster Stelle. Sie könnten nur ein List<KeyValuePair<string, string>>
verwenden:
string[] languageCodsList = service.LanguagesAvailable();
var list = new List<KeyValuePair<string, string>>();
foreach (string cod in languageCodsList)
{
CultureInfo cul = new CultureInfo(cod);
list.Add(new KeyValuePair<string, string>(cul.DisplayName, cod));
}
Alternativ können Sie eine Liste von einfachen CultureInfo
Werte. LINQ macht dies einfach:
List<CultureInfo> cultures = new List<CultureInfo>();
foreach (string cod in service.LanguagesAvailable())
{
cultures.Add(new CultureInfo(cod));
}
languageList.DataTextField = "DisplayName";
languageList.DataValueField = "Name";
languageList.DataSource = cultures;
languageList.DataBind();
Ich würde empfehlen, TextField auf "key" und ValueField auf Value zu setzen. Ich denke, das ist intuitiver. – MGOwen
@ MGOwen Es mag intuitiv sein, DataValueField auf Value zu setzen, wegen des gemeinsamen "Value", aber es ist eigentlich unlogisch in der regulären Verwendung der Datenstruktur/Kontrolle. Details dazu finden Sie in meinem Kommentar zu Jon Skeets Antwort. – Dani
Ich sehe keine Liste. Fügen Sie hinzu, dass 2 Argumente. Nur eine, die ein Argument dauert. ist das winforms? – hrh