2013-09-05 6 views
1

Я работаю с WPF в шаблоне MVVM.Как создать новый экземпляр ItemCollection

Мне нужно, чтобы экземпляр ItemCollection помещал в мою ViewModel, который затем я могу привязать к свойству Items DataGrid на моем представлении.

Я собираюсь программно добавлять кнопки к этому ItemCollection.

Я заметил, что у него нет открытого конструктора и он запечатан. Есть ли способ получить экземпляр? Есть ли какие-либо статические/заводские методы, которые возвратят экземпляр?

Благодаря

+0

Вы не добавить элементы пользовательского интерфейса в ViewModel в MVVM. Используйте 'ObservableCollection '. –

ответ

0

Нет, вы не можете создать и нет, вам даже не нужен. Используйте свойство ItemsSource для передачи данных вместо источника данных в сетку, как это обычно бывает в WPF.

Единственный момент, когда вы взаимодействуете с ItemsCollection, является прямой доступ к свойству Items объекта ItemsControl, то есть при ручной работе с данными вместо привязки. Этот тип манипуляций полностью противоречит духу MVVM, поэтому вы ничего не пропустите.

+0

Или при создании пользовательского элемента управления, полученного из ItemsControl, который является совершенно другой историей –

+0

Отлично работает, я привязал ItemsSource к ObservableCollection , рекомендованный @HighCore. Спасибо –

+0

Я не думаю, что когда-нибудь будет случай, когда вам нужно создать новый экземпляр. «ItemsCollection» предназначался для внутреннего использования, как предполагает @Jon. Класс 'ObservableCollection' должен был использоваться для представления коллекции чтения/записи, чего действительно хочет OP. В конечном счете, это сводится к определению модели представления, в которой вы можете указать шаблон для (в случае OP, 'Button') и привязки коллекции к элементу управления. Это _is_ шаблон MVVM; что ОП попросил _is not_. –

1

Вот обходной путь, чтобы создать пустой ItemCollection:

var myCollection = new DataGrid().Items; 
Смежные вопросы