ItemsControl без ItemsPresenter (Silverlight) - PullRequest
2 голосов
/ 31 мая 2011

Я создал элемент управления, который унаследовал ItemsControl, и элемент управления, который я сделал не имеет ItemsPresenter для своего шаблона. Вместо этого у меня есть Сетка. Я хочу сделать такой список:


(пункт 1)


(GridSplitter)


(пункт 2)


(GridSplitter)


(пункт 3)


Поскольку я должен вставить свой собственный GridSplitter между Предметами, я не могу использовать ItemsPresenter и пусть он заполняет интерфейс для меня.

Я переопределяю метод OnItemsChanged (), чтобы я мог написать свою логику добавления / удаления GridSplitter. Однако мне все еще нужно использовать класс ItemContainerGenerator для сгенерируйте ItemTemplate для моих Предметов.

Но когда в моем элементе управления нет ItemsPresenter, ItemContainerGenerator не похоже на работу. Когда я использую его для создания элемента в первый раз, он возвращает ContentPresenter с DataTemplate. Затем я вставил его в сетку, которая у меня есть. Тем не менее, на экране ничего не отображается. Если я добавлю еще один элемент, он бросит ошибка, когда я вставляю в сетку, говоря, что элемент уже находится в визуальном дереве. По этой причине я думаю, что ItemContainerGenerator не может работать без ItemsPresenter.

Итак, я попытался заменить свою сетку на ItemsPresenter. На этот раз он использует его Подчеркните логику для создания предметов, и она отобразила то, что должна. Однако это не то, что я хочу.

Причина, по которой я хочу использовать ItemContainerGenerator, заключается в том, что мне нужно создать Элементы пользовательского интерфейса из ItemTemplate, которые я определил в Xaml.

Есть ли способ, которым я могу сгенерировать пользовательский интерфейс с помощью ItemTemplate моего контроля над элементами?

1 Ответ

0 голосов
/ 31 мая 2011

Если у вас уже возникают проблемы с прослушиванием OnItemsChanged и ручным добавлением вашего контента в сетку, вам просто нужно создать UserControl вместо использования ItemTemplate, а затем вставить UserControl с его DataContext, установленным в соответствующийобъект в вашу сетку и не беспокойтесь о наследовании от ItemsControl.

...