Mögliche Duplizieren:
WPF ListView - how to add items programmatically?hinzufügen programmatisch ListViewItem zur Listenansicht in WPF
Wie es in C# getan werden kann?
Mögliche Duplizieren:
WPF ListView - how to add items programmatically?hinzufügen programmatisch ListViewItem zur Listenansicht in WPF
Wie es in C# getan werden kann?
Wenn Sie den ListView wie vorgesehen verwenden, wird er an eine zugrunde liegende Liste einer Art Objekt gebunden, und diese Klasse sollte INotifyChanged implementieren. In WPF fügen Sie nicht direkt Elemente aus der ListView hinzu oder entfernen sie. Sie beschäftigen sich mit der Struktur der gebundenen Liste und benachrichtigen die Benutzeroberfläche der Änderung, die sich dann mit den neuen Elementen intelligent neu zeichnet.
Dies ist, wie Sie einen ListViewItem
in Code in Ihre ListView
erstellt hinzufügen würde:
myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
Allerdings habe ich mit MrTelly einig, dass dies nicht notwendig sein sollte, sollten Sie ListView.ItemsSource
bis zu einem gewissen Sammlung werden Einstellung anstatt ListView.Items
direkt zu manipulieren.
Wenn Sie uns mehr Details darüber geben, was Sie erreichen möchten, können wir Ihnen vielleicht helfen, die WPF-Methode zu machen, die auf den ersten Blick nicht immer einfach ist, aber auf lange Sicht einfacher ist.
Sie können Spalten mithilfe von angefügten Eigenschaften dynamisch zu einem ListView hinzufügen. Sie in diesem Artikel auf dem Codeproject es wird genau erklärt, dass ...
fragte ich genau die gleiche Frage HERE (und antwortete mir - ich hatte ein Problem in meinem Code). Hoffe es hilft.
Das Hinzufügen direkt zum ListView in Ihrer App ist nicht unbedingt der "WPF-Weg". Bedenken Sie:
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());
}
}
Dann in XAML alles, was wir tun müssen, ist die Itemssource unserer Listview in unseren AllObjectsToDisplay Liste binden. Dadurch können wir die Abhängigkeit des Hinzufügens von Objekten direkt von unserer ListView trennen. Wir können WPF's Stärke der Datenbindung an entfernen die direkte Abhängigkeit auf WIE fügen wir Business-Objekte zu unserem UI-Container wir zeigen sie in - eine sehr nützliche Praxis!
(sorry, kann nicht Kommentare vorhanden machen)
Wie MrTelly auf ist ...
Binden Sie die Listenansicht auf eine ObservableCollection
ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>();
myListview.ItemSource = lvList;
// Add an item
lvList.Add(new MyClassItem("firstname", "lastname"));
diese Weise ist es die automatisch aktualisiert wird Benutzeroberfläche, wenn Änderungen an der Sammlung vorgenommen werden.