47 messaggi dal 30 maggio 2002
Salve,
ho un problema apparentemente banale ma che mi sta tormentando il fegato, devo bindare un ramo xml ad una combobox in una winform wpf.

In particolare il problema riguarda il valore da mostrare in output e soprattutto il value sottostante

dato il ramo in questione:
<root>
<item>
<descrizione>Pippo</descrizione>
<Key>1</Key>
</item>
<item>
<descrizione>Pluto</descrizione>
<Key>2</Key>
</item>
<item>
<descrizione>Paperino</descrizione>
<Key>3</Key>
</item>
</root>

lo bindo in questo modo:
combo.ItemsSource =xml.Root.Elements("root").Elements("Item");
combo.DisplayMemberPath = "descrizione";
combo.SelectedValuePath = "Key";

Se non imposto il dysplayMemberPath e il SelectedValuePath mi carica la combo con un elenco di rami Item.

Se invece li imposto non vedo niente.
Se scalo il ramo fino a "descrizione" vedo i vari pippo, pluto etc, ma non ho le key.

Qualcuno ha già affrontato questo problema?

Grazie
Non ti risolvo il problema con l'xml ma ti dò un'alternativa. Nel senso: non usarlo perché poco pratico. Quando vorrai poi recuperare il valore selezionato ti ritrovi con un nodo, oppure lavorerai con la chiave. Queste sono brutte tecniche; sfrutta gli oggetti e ciò che rappresentano.
Nel tuo caso puoi crearti un tuo oggetto che prepari leggendo dal file xml o ancora più rapidamente usa un anonymous type.
combo.ItemsSource =xml.Root.Elements("root").Elements("Item").Select(i => new { Key = i.Element('Key").Value });

Preferisco comunque usare un oggetto tuo, un DTO da usare per scopi di binding e interrogazione

Ciao

Il mio blog
Homepage
47 messaggi dal 30 maggio 2002
ti ringrazio per la risposta,
in effetti ho aggirato il problema usando un arrayList

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.