Вопрос

В WPF, как я могу поместить обычный UIElements встроено в текст?Например, определенная классификация текста заменила бы интервал текста выпадающим списком, содержащим определенные параметры.

Я использовал такие объекты, как Span, Bold, Hyperlink, которые вносят некоторые незначительные изменения в текст inline, но я хочу иметь возможность сделать что-то более радикальное и нестандартное.Могу ли я реализовать аналогичный встроенный объект для достижения этой цели?

Я работаю над проектом, где мне нужны некоторые расширенные текстовые визуальные эффекты.В частности, я хочу сделать что-то похожее на редактор исходных текстов на основе Visual Studio 2010 WPF.

У меня будет фрагмент текста, и различные компоненты будут просматривать этот текст в поисках фрагментов с особым значением.Когда он найдет интервал текста, он запишет / пометит этот интервал.Затем другой набор компонентов проследует по классифицированному тексту и добавит украшения на основе их классификации.

Вы можете представить это как смарт-теги для WPF.

Я действительно понятия не имею, с чего начать, вся документация по расширенному тексту в WPF посвящена анимации, пользовательским кистям, преобразованию в геометрию и т.д...

Это было полезно?

Решение

Взгляните на InlineUIContainer и BlockUIContainer классы.Они позволяют UIElements, которые должны быть встроены в содержимое потока, например FlowDocument или TextBlock.

Вот пример кнопки, встроенной в TextBlock:

<TextBlock>
    Some inline
    <InlineUIContainer>
        <Button Content="Hi" Click="Button_Click" />
    </InlineUIContainer>
    inside the text.
</TextBlock>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top