Duplicar posible:
WPF ListView - how to add items programmatically?programación ListViewItem a ListView en WPF
¿Cómo se puede hacer en C#?
Duplicar posible:
WPF ListView - how to add items programmatically?programación ListViewItem a ListView en WPF
¿Cómo se puede hacer en C#?
Si está utilizando el ListView como está previsto, estará vinculado a una lista subyacente de algún tipo de objeto, y esa clase debe implementar INotifyChanged. En WPF no agrega/elimina elementos directamente de ListView, maneja la estructura de la lista enlazada y notifica a la UI del cambio, que luego se redibuja inteligentemente con los nuevos elementos.
Esta es la forma en que agregaría un ListViewItem
creada en código a su ListView
:
myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
Sin embargo, estoy de acuerdo con MrTelly que esto no debería ser necesario, debe estar fijándose ListView.ItemsSource
a alguna colección en lugar de manipular ListView.Items
directamente.
Si nos proporciona más detalles sobre lo que quiere lograr quizás podamos ayudarlo a hacerlo de la manera WPF, que no siempre es la manera fácil al principio, pero es mucho más fácil a largo plazo.
Puede agregar columnas dinámicamente a un ListView utilizando las Propiedades adjuntas. Echa un vistazo a este artículo sobre la CodeProject se explica exactamente eso ...
me preguntó exactamente la misma pregunta HERE (y contestado yo - yo tenía un problema en mi código). Espero que ayude.
Agregarlo directamente a ListView en su aplicación no es necesariamente el "WPF-way". Considere esto:
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());
}
}
Luego, en XAML todo lo que tenemos que hacer es obligar a la ItemsSource de nuestra ListView a nuestra lista AllObjectsToDisplay. Esto nos permite separar la dependencia de agregar objetos directamente a nuestro ListView; podemos usar la fuerza de enlace de datos de WPF a eliminar la dependencia directa sobre CÓMO agregamos objetos comerciales a nuestro contenedor de UI en el que los mostramos, ¡una práctica muy útil!
(lo siento, no puede hacer comentarios por el momento)
Como MrTelly es a ...
Enlazar la vista de lista a un ObservableCollection
ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>();
myListview.ItemSource = lvList;
// Add an item
lvList.Add(new MyClassItem("firstname", "lastname"));
De esta manera se actualizará automáticamente el UI cuando se realizan cambios en la colección.