Desidero aggiungere una riga utilizzando i dati da ExpandoObject
, che è simile a Dictionary<string, object>
. Il string
è l'intestazione della colonna e il valore di object
è il valore della colonna. Ogni volta che ottengo nuovi dati sto creando un nuovo GridView
, perché il numero di colonne può essere diverso. Nel List
myItems sono tutte le righe Dictionary<string, object>
, che voglio mostrare a mio avviso.Aggiungi colonna a listview che contiene un'immagine
Questo è quanto ho aggiungere le colonne al mio punto di vista:
List<Column> columns = new List<Column>();
myItemValues = (IDictionary<string, object>)myItems[0];
// Key is the column, value is the value
foreach (var pair in myItemValues)
{
Column column = new Column();
column.Title = pair.Key;
column.SourceField = pair.Key;
columns.Add(column);
}
view.Columns.Clear();
foreach (var column in columns)
{
Binding binding = new Binding(column.SourceField);
if (column.SourceField == "Icon")
{
view.Columns.Add(new GridViewColumn
{
Header = column.Title,
DisplayMemberBinding = binding,
CellTemplate = new DataTemplate(typeof(Image))
});
}
else
{
view.Columns.Add(new GridViewColumn { Header = column.Title, DisplayMemberBinding = binding });
}
}
diretto dopo questo cerco di aggiungere le righe:
foreach (dynamic item in myItems)
{
this.listView.Items.Add(item);
}
Ho provato a modificare questo solution per un altro scopo. Questa soluzione funziona molto bene, se solo voglio aggiungere valori di tipo string
, ma ora voglio anche visualizzare un image
nella GridView, ma se aggiungo uno al mio GridView, mi mostra solo:
"System.Windows.Controls.Image"
Ora voglio sapere, se posso modificare il mio codice in modo da posso visualizzare qualsiasi tipo (o almeno images
e strings
) in una gridView o devo usare un modo completamente nuovo e sarebbe il modo?
EDIT: Nei precedenti approcci, si è detto, che ho bisogno di creare un nuovo DataTemplate
per mostrare un'immagine, ma nessuna delle soluzioni (Solution 1, Solution 2) ho trovato sta lavorando per me.
provare a impostare 'Ce llTemplate' per la colonna in base al tipo di dati in loop in cui si creano colonne. Questo è nel caso in cui una colonna mostri sempre lo stesso tipo di dati. Se il tipo di dati può cambiare da una riga all'altra, è possibile aggiungere 'CellTemplateSelector' in modo che venga utilizzato il modello corretto. – Shadowed
Ho creato un nuovo 'DataTemplate' e ho impostato' DataType' su 'typeof (Image)'. Devo impostare più proprietà? perché ho ancora lo stesso risultato. – daniel59
Ho provato queste soluzioni per creare un DataTemplate: http://stackoverflow.com/questions/248362/how-do-i-build-a-datatemplate-in-c-sharp-code e http://stackoverflow.com/questions/5471405/create-datatemplate-in-code-behind ma nessuno di loro funziona per me. Quindi, come posso creare un 'DataTemplate' che fornisce' images' in un 'gridview'? – daniel59