2009-03-20 13 views

risposta

1

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.

6

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,.

4

ho chiesto la stessa identica domanda HERE (e mi ha risposto - ho avuto un problema nel mio codice). Spero che aiuti.

4

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!

2

(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.

Problemi correlati