Suena muy parecido a lo que hacemos en nuestro proyecto.
Hay una clase base que es genérico:
public partial class controlItemList<TBaseItem, TBaseItemCollection> : UserControl, IUIDispatcher
where TBaseItem : new()
where TBaseItemCollection : IItemCollection<TBaseItem>
Luego, para cada uso que definen una versión no genérica (que aún no podría ser utilizado por el diseñador):
public class controlMessagesNonGenericParent : controlItemList<MailItem, MailItemCollection>
{
}
. .. y controles entonces hemos derivados que podrían ser utilizados en el diseñador:
public partial class controlMessages : controlMessagesNonGenericParent
{
...
}
Cuando has probado, ¿cómo la clase se declara en xaml? –