WPF: IEditableCollectionView и CanAddNew и пустые коллекции - PullRequest
3 голосов
/ 21 апреля 2010

У нас были некоторые проблемы с wpf datagrid и IEditableCollectionView (хотя этот вопрос относится к использованию IEditableCollectionView и ItemsControl) Когда у вас есть коллекция без элементов, IEditableCollectionView не может определить, какие элементы следует вставить, поэтому он устанавливает CanAddNew=false мы нашли решение здесь (глубоко в комментариях), которое выглядит так:

Если вы производите от ObservableCollection, как это

public class PersonsList : ObservableCollection<Person> { }

вы обнаружите, что если начальная коллекция пуста, в представлении не будет отображаться NewItemPlaceHolder. Это потому, что PersonsList не может разрешить тип T во время разработки. Обходной путь, который мне подходит, - это передать тип T в качестве параметра в класс следующим образом

PersonsList<T> : ObservableCollection<T> where T : Person { }

Этот подход поместит NewItemPlaceHolder, даже если коллекция пуста.

Мне интересно, есть ли интерфейс, который я могу реализовать в своих коллекциях, который информирует IEditableCollectionView, какой тип создать, если я получу запрос AddNew.

1 Ответ

1 голос
/ 24 апреля 2010

Попробуйте реализовать IEditableObject на T и посмотрите, исчезнет ли проблема. Винсент Сибал говорит, что это необходимо. Но он также утверждает, что PersonsList<T> также необходим, но вы уже поняли это. Надеюсь, IEditableObject достаточно, и вы сможете использовать неуниверсальный класс.

...