WPF не имеет класса ObjectDataSource.Вы имеете в виду ObjectDataProvider
?Или вы просто имеете в виду, что вы используете коллекцию объектов в качестве источника данных?
Источником данных для ListView
(или любого элемента управления) должна быть коллекция, которая реализует INotifyCollectionChanged
.Наиболее часто используемый тип в WPF - ObservableCollection<T>
, но есть и другие типы, которые вы можете использовать.
Если вы заполняете коллекцию, которая изменяет уведомление, и связываете элемент управления элемента ItemsSource
с коллекцией,затем каждый раз, когда вы добавляете или удаляете объект из коллекции, результат будет отражен в том, что отображает элемент управления.
Короче говоря, чтобы удалить все элементы из ListView
, очистите коллекцию, которая ItemsSource
привязан к.
Если коллекция не поддерживает уведомления об изменениях, это не будет работать.В этом случае вам необходимо обновить привязку к источнику элементов.Например, если оно привязано к свойству, которое поддерживает уведомление об изменении, вы можете просто поднять PropertyChanged
для этого свойства, и привязка обновит элементы.Если вы установили ItemsSource
в коде позади, вам, вероятно, придется установить его на null
, а затем установить его обратно, что приведет к обновлению привязки.
Возможно, вы думаете: «это похоже на глупый взлом», и вы правы: WPF разработан для уведомления о связывании и изменении свойств, и если вы манипулируете этими свойствами в коде позади, выпочти все делает неправильно.