Eventuali duplicati:
WPF ListView - how to add items programmatically?Aggiungere programmazione ListViewItem a ListView in WPF
Come si può fare in C#?
Eventuali duplicati:
WPF ListView - how to add items programmatically?Aggiungere programmazione ListViewItem a ListView in WPF
Come si può fare in C#?
Se si utilizza ListView come previsto, verrà associato a un elenco sottostante di un tipo di oggetto e tale classe dovrà implementare INotifyChanged. In WPF non si aggiungono/rimuovono direttamente elementi da ListView, si gestisce la struttura dell'elenco vincolato e si notifica l'interfaccia utente della modifica, che quindi si ridefinisce in modo intelligente con i nuovi elementi.
Questo è come si dovrebbe aggiungere un ListViewItem
creato nel codice al tuo ListView
:
myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
Tuttavia, sono d'accordo con MrTelly che questo non dovrebbe essere necessario, si dovrebbe essere impostando ListView.ItemsSource
a qualche raccolta piuttosto che manipolare direttamente ListView.Items
.
Se ci fornisci maggiori dettagli su ciò che vuoi realizzare, possiamo aiutarti a farlo in modo WPF, che non è sempre facile all'inizio, ma è il molto più semplice a lungo termine,.
È possibile aggiungere colonne dinamicamente a un controllo ListView utilizzando Proprietà associate. Dai un'occhiata a questo articolo sul CodeProject spiega esattamente questo ...
ho chiesto la stessa identica domanda HERE (e mi ha risposto - ho avuto un problema nel mio codice). Spero che aiuti.
Aggiungerlo direttamente a ListView nella tua app non è necessariamente il "modo WPF". Considerate questo:
public class BindableListViewModel
{
public IList<TypeOfObjectToDisplay> AllObjectsToDisplay;
public ICommand AddNewItemToList;
public BindableListViewModel()
{
AllObjectsToDisplay = new ObservableList<TypeOfObjectToDisplay>();
AddNewItemToList = new RelayCommand(AddNewItem(), CanAddNewItem());
}
public bool CanAddNewItem()
{
//logic that determines IF you are allowed to add
//For now, i'll just say that we can alway add.
return true;
}
public void AddNewItem()
{
AllObjectsToDisplay.Add(new TypeOfObjectToDisplay());
}
}
Poi, in XAML tutto quello che dobbiamo fare è associare l'ItemsSource della nostra ListView alla nostra lista AllObjectsToDisplay. Questo ci permette di separare la dipendenza dall'aggiunta di oggetti direttamente al nostro ListView; La forza di WPF di Data Binding a elimina la dipendenza diretta in COME aggiungiamo oggetti businesss al nostro contenitore UI in cui li visualizziamo - una pratica molto utile!
(spiacente, non fare commenti ancora)
Come MrTelly è a ...
Bind ListView a un ObservableCollection
ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>();
myListview.ItemSource = lvList;
// Add an item
lvList.Add(new MyClassItem("firstname", "lastname"));
In questo modo si aggiorna automaticamente la Interfaccia utente quando vengono apportate modifiche alla raccolta.