2010-08-12 8 views

Respuesta

1

Microsoft no expone los métodos necesarios para representar un TextElement personalizado dentro de una de sus clases de documentos. Si observa el código de Run o Span, no hay un código de representación real. La representación se lleva a cabo en UIElement, construido por varias clases internas (como FixedTextBuilder).

De las notas de MSDN en FrameworkContentElement:

FrameworkContentElement aún no define su propio comportamiento de representación; la instancia de una instancia de clase FrameworkContentElement real en código o marcado es posible pero no muestra nada en una interfaz de usuario (UI) de la aplicación WPF. La lógica de representación debe ser proporcionada por las clases que toman elementos secundarios de FrameworkContentElement como parte de su modelo de contenido, o en las clases derivadas de FrameworkContentElement.

no todo está perdido, el apoyo a la prestación de bloque personalizado y Los elementos en línea se proporciona a través de las clases y BlockUIContainerInlineUIContainer. A continuación, puede crear un UIElement de bajo nivel que se alojaría dentro del documento fijo o de flujo, o utilizar elementos WPF de mayor nivel.

+0

estoy tratando de aplicar el patrón MVVM-para un FlowDocument. Podría lograr un TextBox con DataBinding pero tengo problemas con un BlockUIContainer ... – DrMarbuse

1

¿Qué tipo de extensibilidad se requiere? Por lo general, cuando se trata de cambiar el comportamiento predeterminado de cualquier control de WPF, que no se pudo cambiar a través de la herencia, utilizamos Attached Properties.

Here is an example del elemento Span, que está destinado a la colección de elementos. El mismo truco con las propiedades adjuntas ayuda a vincular Run a un texto.

La respuesta también dependerá del contexto de uso FlowDocument. Si está en modo de solo lectura, las clases BlockUIContainer y InlineUIContainer son tus amigos. Pero si FlowDocument está dentro de RichTextBox, los odiará y los maldecirá (problemas con copiar/pegar, deshacer/rehacer, etc.) junto con toda la infraestructura de soporte de texto de WPF.

Cuestiones relacionadas