WPF UIElements, встроенный в текст «Украшения»
Как в WPF поместить обычные UIElement
s в текст? Например, определенная классификация текста заменит фрагмент текста раскрывающимся списком, содержащим определенные параметры.
Я использовал такие объекты, как Span, Bold, Hyperlink, которые вносят небольшие изменения в текст, встроенный в строку, но я хочу иметь возможность сделать что-то более радикальное и нестандартное. Могу ли я реализовать для этого аналогичный объект Inline?
Я работаю над проектом, в котором мне нужны расширенные визуальные эффекты для текста. В частности, я хочу сделать что-то похожее на редактор исходного кода Visual Studio 2010 на основе WPF.
У меня будет фрагмент текста, и различные компоненты будут искать в нем фрагменты со специальным значением. Когда он найдет отрезок текста, он запишет / пометит этот отрезок. Затем другой набор компонентов будет проходить по классифицированному тексту и добавлять украшения на основе их классификации.
Вы можете думать об этом как о смарт-тегах для WPF.
Я действительно понятия не имею, с чего начать, вся документация по расширенному тексту в WPF посвящена анимации, настраиваемым кистям, преобразованию в геометрию и т. Д.
Ответов (1)1
Возьмите взгляд на InlineUIContainer
и BlockUIContainer
классах. Они позволяют UIElement
встраивать s в содержимое потока, например FlowDocument
или TextBlock
.
Вот пример кнопки, встроенной в TextBlock
:
<TextBlock>
Some inline
<InlineUIContainer>
<Button Content="Hi" Click="Button_Click" />
</InlineUIContainer>
inside the text.
</TextBlock>