2009-02-27 9 views
7

En WPF, ¿cómo puedo poner UIElements en línea con el texto? Por ejemplo, una cierta clasificación de texto reemplazaría un lapso de texto con un menú desplegable que contiene opciones específicas.WPF UIElements Inline with Text "Adornos"

He utilizado objetos como Span, Bold, Hyperlink que hacen algunas modificaciones ligeras al texto en línea, pero quiero poder hacer algo más drástico y personalizado. ¿Puedo implementar un objeto Inline similar para lograr esto?

Estoy trabajando en un proyecto en el que necesito algunas visualizaciones de texto avanzadas. Específicamente, quiero hacer algo similar al editor fuente basado en WPF de Visual Studio 2010.

Voy a tener una pieza de texto y varios componentes mirarán ese texto buscando piezas con un significado especial. Cuando encuentre un lapso de texto, lo grabará/marcará. Luego, otro conjunto de componentes revisará el texto clasificado y agregará adornos según sus clasificaciones.

Puede pensar en esto como etiquetas inteligentes para WPF.

que realmente no tienen idea de por dónde empezar, toda la documentación sobre el texto avanzado en WPF es sobre la animación, pinceles personalizados, convierten a la geometría, etc ...

Respuesta

13

Tome un vistazo a las clases InlineUIContainer y BlockUIContainer. Permiten que UIElement s se incrustan en un contenido de flujo, como FlowDocument o TextBlock.

He aquí un ejemplo de un botón inline en un TextBlock:

<TextBlock> 
    Some inline 
    <InlineUIContainer> 
     <Button Content="Hi" Click="Button_Click" /> 
    </InlineUIContainer> 
    inside the text. 
</TextBlock> 
+0

gracias mi amigo! Eres una persona bella y hermosa; y no dejes que nadie te diga lo contrario! – joshperry

+3

Wow WPF es en verdad lo mejor que Microsoft ha creado, y el framework que utilicé (ex-cocoa guy here heehee) – Pierreten