Это невозможно, поскольку свойство TextBlock.Inlines
не является свойством зависимости. Только свойства зависимостей могут быть целью привязки данных.
В зависимости от ваших точных требований к макету вы можете сделать это, используя ItemsControl
с ItemsPanel
, установленным на WrapPanel
и ItemsSource
, установленным для вашей коллекции. (Здесь могут потребоваться некоторые эксперименты, потому что Inline
не является UIElement
, поэтому его рендеринг по умолчанию, вероятно, будет выполняться с использованием ToString()
, а не отображаться.)
В качестве альтернативы вам может понадобиться создать новый элемент управления, например, MultipartTextBlock
, со связываемым свойством PartsSource
и TextBlock
в качестве шаблона по умолчанию. Когда был установлен PartsSource
, ваш элемент управления будет подключать обработчик событий CollectionChanged
(напрямую или через CollectionChangedEventManager) и обновлять коллекцию TextBlock.Inlines
из кода по мере изменения коллекции PartsSource
.
В любом случае может потребоваться осторожность, если ваш код генерирует элементы Inline
напрямую (потому что Inline
нельзя использовать в двух местах одновременно). В качестве альтернативы вы можете рассмотреть возможность предоставления абстрактной модели текста, шрифта и т. Д. (То есть модели представления) и создания реальных Inline
объектов с помощью DataTemplate
. Это также может улучшить тестируемость, но, очевидно, добавляет сложности и усилий.