2010-08-12 9 views

risposta

1

Microsoft non ha esposto i metodi richiesti per il rendering di una personalizzata TextElement all'interno di una delle loro classi di documenti. Se si guarda il codice per Run o Span, non esiste un codice di rendering effettivo. Il rendering si svolge in UIElement costruito da varie classi interne (come FixedTextBuilder).

dagli appunti di MSDN sulla FrameworkContentElement:

FrameworkContentElement non ha ancora definire il proprio comportamento di rendering; l'istanziazione di un'istanza della classe FrameworkContentElement effettiva nel codice o nella marcatura è possibile ma non visualizza nulla nell'interfaccia utente dell'applicazione (WI) di WPF. La logica di rendering deve essere fornita da classi che accettano gli elementi figlio FrameworkContentElement come parte del loro modello di contenuto o nelle classi derivate di FrameworkContentElement.

Non tutto è perduto, il supporto per il rendering blocco personalizzato e gli elementi in linea viene fornita attraverso le classi BlockUIContainer e InlineUIContainer. È quindi possibile creare un UIElement di basso livello che sarà ospitato all'interno del documento fisso o di flusso o utilizzare elementi WPF di livello superiore.

+0

Sto tentando di applicare MVVM-Pattern per un documento di flusso. Potrei realizzare un TextBox con DataBinding ma ho problemi con BlockUIContainer ... – DrMarbuse

1

Che tipo di estensibilità è richiesta? Di solito quando si tratta di modificare il comportamento predefinito di qualsiasi controllo WPF, che non può essere modificato tramite l'ereditarietà, si utilizza Attached Properties.

Here is an example di Span elemento, che è legato alla raccolta di elementi. Lo stesso trucco con le proprietà allegate aiuta a legare Run a un testo.

La risposta dipenderà anche dal contesto di utilizzo FlowDocument. Se è in modalità di sola lettura, le classi BlockUIContainer e InlineUIContainer sono i tuoi amici. Ma se FlowDocument si trova all'interno di RichTextBox, li odierete e li malediremo (problemi con copia/incolla, annulla/ripristina, ecc.) Con l'intera infrastruttura di supporto del testo WPF.

Problemi correlati