Возможный дубликат:
WPF ListView - как добавлять элементы программно?
Как это можно сделать на С#?
Вот как вы можете добавить ListViewItem
, созданный в коде, к вашему ListView
:
myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
Однако я согласен с MrTelly в том, что в этом нет необходимости, вы должны установить ListView.ItemsSource
для какой-либо коллекции, а не манипулировать ListView.Items
напрямую.
Если вы дадите нам более подробную информацию о том, чего вы хотите достичь, возможно, мы сможем помочь вам сделать это с помощью WPF, что поначалу не всегда просто, но в конечном итоге намного проще.
Я задал точно такой же вопрос ЗДЕСЬ (и ответил сам себе - у меня было проблема в моем коде). Надеюсь, поможет.
Добавление его непосредственно в ListView в вашем приложении не обязательно является "способом WPF". Учти это:
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());
}
}
Затем в XAML все, что нам нужно сделать, это привязать ItemsSource нашего ListView к нашему списку AllObjectsToDisplay. Это позволяет нам отделить зависимость добавления объектов непосредственно в наш ListView; мы можем использовать силу привязки данных WPF, чтобы удалить прямую зависимость от того, КАК мы добавляем бизнес-объекты в наш контейнер пользовательского интерфейса, в котором мы их отображаем - очень полезная практика!
(извините, пока не могу комментировать)
Поскольку MrTelly собирается...
Привязать список к ObservableCollection
ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>();
myListview.ItemSource = lvList;
// Add an item
lvList.Add(new MyClassItem("firstname", "lastname"));
Таким образом, он будет автоматически обновлять пользовательский интерфейс при внесении изменений в коллекцию.
Если вы используете ListView по назначению, он будет привязан к базовому списку какого-либо объекта, и этот класс должен реализовывать INotifyChanged. В WPF вы не добавляете и не удаляете элементы из ListView напрямую, вы имеете дело со структурой связанного списка, и он уведомляет пользовательский интерфейс об изменении, который затем ловко перерисовывает себя с новыми элементами.
Вы можете динамически добавлять столбцы в ListView с помощью вложенных свойств. Прочтите эту статью в CodeProject, в ней объясняется именно это...
WPF DynamicListView — привязка к DataMatrix