UserControl вместо DataTemplates - есть ли способ для больших коллекций? - PullRequest
1 голос
/ 27 июня 2011

Есть два пути. Может быть, оба глупы ... Я должен показать некоторые коллекции предметов.

Первый.

Я использую DataTemplate для ListBoxItem. Просто установите itemSource = myCollection;

Вот и все. Простая схема.

Второй.

Каждый элемент в моей коллекции имеет свойство view . Это UserControl. Это определяет, как элемент рендеринга.

Создать DataTemplate только с ContentPresenter .

Привязка Содержимое свойство к представлению .

Просто установите itemSource = myCollection;

Вот и все. Более сложный. Но тоже работает.

Имеет ли второе право на жизнь? Я сомневаюсь, что мне нужно создать экземпляр UserControl для каждого элемента в моей коллекции?

Не слишком ли дорого для сбора более 500 наименований?

Спасибо.

1 Ответ

1 голос
/ 27 июня 2011

Я не верю, что есть большая разница, с подходом DataTemplate платформа создаст экземпляр DataTemplate для каждого элемента в коллекции.Во втором подходе экземпляр пользовательского элемента управления будет создан для каждого элемента, может быть несколько элементов управления, но только несколько для элемента.

Одна из причин, по которой второй подход может быть предпочтительным, заключается в том, что вы можете иметьлогика, вокруг которой связан контент.Это может означать разные пользовательские элементы управления для каждого элемента в списке.Caliburn Micro позволяет использовать этот подход очень естественно.

...