Ajouter par programme ListViewItem à Listview dans WPF

Dupliquer possible:
WPF ListView – comment append des éléments par programme?

Comment cela peut-il être fait en C #?

Voici comment append un ListViewItem créé dans le code à votre ListView :

 myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." }); 

Cependant, je suis d’accord avec MrTelly sur le fait que cela ne devrait pas être nécessaire, vous devriez définir ListView.ItemsSource sur une collection plutôt que de manipuler ListView.Items directement.

Si vous nous donnez plus de détails sur ce que vous voulez accomplir, nous pourrons peut-être vous aider à le faire de la manière WPF, ce qui n’est pas toujours facile au début, mais beaucoup plus facile à long terme.

J’ai posé exactement la même question ICI (et ai répondu moi-même – j’ai eu un problème dans mon code). J’espère que ça aide.

L’append directement à la liste dans votre application n’est pas nécessairement la “voie WPF”. Considère ceci:

 public class BindableListViewModel { public IList AllObjectsToDisplay; public ICommand AddNewItemToList; public BindableListViewModel() { AllObjectsToDisplay = new ObservableList(); 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()); } } 

Ensuite, en XAML, tout ce dont nous avons besoin est de lier le ItemsSource de notre ListView à notre liste AllObjectsToDisplay. Cela nous permet de séparer la dépendance de l’ajout d’objects directement à notre ListView; nous pouvons utiliser la force de la liaison de données de WPF pour supprimer la dépendance directe à la manière COMMENT nous ajoutons des objects métier à notre conteneur d’interface utilisateur dans laquelle nous les affichons – une pratique très utile!

(désolé, je ne peux pas encore faire de commentaires)

Comme MrTelly est sur le sharepoint …

Lier la listview à un ObservableCollection

 ObservableCollection lvList = new ObservableCollection(); myListview.ItemSource = lvList; // Add an item lvList.Add(new MyClassItem("firstname", "lastname")); 

Ainsi, l’interface utilisateur sera automatiquement mise à jour lorsque des modifications seront apscopes à la collection.

Si vous utilisez le ListView tel qu’il est prévu, il sera lié à une liste sous-jacente d’un type d’object, et cette classe doit implémenter INotifyChanged. Dans WPF, vous n’ajoutez ni ne supprimez directement d’éléments de ListView, vous traitez avec la structure de liste liée et notifie l’interface utilisateur de la modification, qui se redessine ensuite de manière intelligente avec les nouveaux éléments.

Vous pouvez append des colonnes de manière dynamic à un ListView en utilisant Propriétés attachées. Découvrez cet article sur le CodeProject, il explique exactement que …

WPF DynamicListView – Liaison à un DataMasortingx