Wpf: унаследовать код кода - PullRequest
       5

Wpf: унаследовать код кода

0 голосов
/ 22 октября 2009

У меня есть несколько похожих пользовательских элементов управления, которые отображают списки просмотра соответственно разных объектов данных. В файлах кода этих элементов управления есть довольно много общей бизнес-логики.

Как можно объединить эти общие методы в одном «суперклассе», как я это сделал бы в обычном не wpf-случае (повторное использование каких-либо частей xaml не требуется)? Создание суперэлемента (только с файлом xaml скелета), от которого наследуются элементы управления, дает ошибку синтаксического анализатора:

Partial declarations of DERIVED-CLASS must not specify different base classes

в производных пользовательских элементах управления.

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 22 октября 2009

Как вы использовали «супер-контроль» в производных пользовательских элементах управления? Просто измените базовый класс?

Если это так, вам нужно изменить корневой элемент вашего файла XAML (т. Е. Тот, на котором указан x: Class), чтобы он соответствовал.

1 голос
/ 22 октября 2009

Мое лучшее предложение - создавать элементы управления без контроля (элементы управления без XAML). Их вы можете унаследовать и, в конечном итоге, сделать более мощными, потому что стили, которые вы можете создать, будут более гибкими (т. Е. Кнопки, которые вы можете вписать во все. Ваш стиль по умолчанию для элемента управления может быть помещен в Themes \ generic.xaml, и вы можете создать другие стили по умолчанию для подклассных элементов управления. Эти стили могут иметь копии, которые существуют и в других ресурсах.

Здесь, в моем блоге, я пишу , но он ориентирован на серебристый свет. Синтаксически он немного отличается в WPF, но идеи те же.

1 голос
/ 22 октября 2009

Похоже, DataTemplating это то, что вы хотите. Вы настраиваете общее настраиваемое представление списка, которое содержит всю вашу бизнес-логику, а затем используете шаблоны данных в XAML для настройки представления в зависимости от типа объекта, который он содержит.

Вот отличная ссылка для начала: http://msdn.microsoft.com/en-us/library/ms742521.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...