Базовые классы могут использоваться для простых целей добавления точности типов.Например, код в процессоре FlowDocument может просто захотеть сделать такой код:
if(currentElement is Inline)
{
// Do something
}
На самом деле Inline вообще ничего не должен делать.
Что касается подклассов Inline, я думаю, вы не сможете достичь того, чего хотите.Насколько я понимаю, средство визуализации FlowDocument отвечает за просмотр типов элементов и интерпретацию их поведения по его типу и свойствам.Другими словами, он не знает вашего пользовательского кода.Я думаю, что лучшее, что вы могли бы сделать, - это создать подкласс из полезного элемента и сделать так, чтобы ваш подкласс связывался со значениями свойств или чем-то, что можно переопределить.
Вы также можете добавлять вложенные свойства и обрабатывать дочерние элементы, определяющие эти свойства.Например, если вы хотите, чтобы контейнер гиперссылок позволял различным дочерним элементам предоставлять разные ссылки, вы могли бы создать подкласс из Hyperlink, определить новое свойство присоединенного элемента Link и обрабатывать события щелчка для дочерних элементов иначе, чем сама Hyperlink.
Возможно, вам также удастся добиться некоторого успеха с элементами InlineUIContainer и BlockUIContainer, которые позволят вам встроить в него любой UIElement, включая пользовательские UIElements.