Вы можете использовать параллельные иерархии классов (что само по себе не является шаблоном проектирования). Используя эту идею, вы создадите базовый класс code-behind для обслуживания свойств вашего базового класса, а затем создадите классы, производные от этого, для поддержки необходимого пользовательского интерфейса для обработки дополнительных свойств ваших производных классов.
Параллельные библиотеки классов могут привести к проблемам, например если вы создаете новый производный класс, то вам также необходимо создать новый производный класс пользовательского интерфейса и т. д., однако, если ваши производные классы пользовательского интерфейса просты, это не станет большой проблемой.
Edit:
Если вы идете по этому маршруту, вам нужно будет создать иерархию пользовательских элементов управления, а не страниц, а затем добавить соответствующий пользовательский элемент управления на страницу во время выполнения.