Я немного застрял в различных подходах к дизайну пользовательского интерфейса в Silverlight в сочетании с аспектом повторного использования. Предположим следующий простой пример:
Базовый класс ОРГАНИЗМ имеет ИМЯ + ВОЗРАСТ
Дочерний класс СОБАКА имеет ФУРКОР
Дочерний класс ЧЕЛОВЕК имеет ЗАДАНИЕ
Теперь у меня есть список из 30 ОРГАНИЗМОВ, немного СОБАКИ, немного ЧЕЛОВЕКА.
Я могу использовать listBox, чтобы показать все элементы (имена классов).
Я хочу создать "базовый вид" для ОРГАНИЗМА (например, имя вверху)
Если объект данных - СОБАКА, я хочу также перечислить его furcolor.
Если это ЧЕЛОВЕК, я хочу также перечислить описание его работы.
Я пробовал DataTemplates, UserControls и другие вещи, но я застрял. В Silverlight нет TargetType (или я что-то упустил), и этот простой пример кажется очень странным. Стили применяются только к визуальным элементам, не уверен, что они могут быть основаны друг на друге. Но это также кажется неправильным ...
Мой реальный пример более сложный, но вы поняли идею. У базового класса есть некоторые свойства, которые я хочу отобразить, а у дочерних классов есть еще некоторые, которые я хочу «добавить» без дублирования XAMl.
Какие-нибудь советы или подсказки в правильном направлении?
Chris
[РЕДАКТИРОВАТЬ] Чтобы уточнить, у меня проблема не ограничивается списками.
Другой сценарий - это подробное представление, показывающее либо собаку, либо человека.
Представление большинства деталей идентично, поэтому я мог бы использовать UserControl с красной рамкой для визуализации Organism с TextBlock, привязанным к Name. Теперь под этим текстовым блоком (но все еще внутри UserControl) должен быть блок задания или furcolor.
UserControl для ОРГАНИЗМА
================= Fancy Border ===================
Название: Хорст
================= Fancy Border ===================
На основе UserControl для ЧЕЛОВЕКА
================= Fancy Border ===================
Название: Хорст
Работа, вакансии: Дизайнер программного обеспечения
================= Fancy Border ===================
На основе UserControl для собаки
================= Fancy Border ===================
Название: Хорст
FurColor: коричневый
================= Fancy Border ===================
Использование всего вышеперечисленного в «родительском контроле» и использование настроек видимости в зависимости от типов просто кажется неправильным, представьте 100 свойств человека, которые затем будут скрыты, но существуют в элементах управления собакой.