WPF UIElements в строке с надписью "Украшения" - PullRequest
7 голосов
/ 27 февраля 2009

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

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

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

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

Вы можете думать об этом как о смарт-тегах для WPF.

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

1 Ответ

13 голосов
/ 27 февраля 2009

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

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

<TextBlock>
    Some inline
    <InlineUIContainer>
        <Button Content="Hi" Click="Button_Click" />
    </InlineUIContainer>
    inside the text.
</TextBlock>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...