Blocco di testo RTF

I blocchi di testo in formato RTF offrono diverse funzionalità per il layout di testo avanzato che è possibile usare quando si necessita di supporto per paragrafi, elementi dell'interfaccia utente inline o layout di testo complessi.

È il controllo giusto?

Usare un controllo RichTextBlock quando si necessita di supporto per più paragrafi, layout di testo complessi o a più colonne o elementi dell'interfaccia utente inline come le immagini.

Usare un TextBlock per visualizzare la maggior parte del testo di sola lettura nell'app. È possibile usarlo per visualizzare testo su riga singola o su più righe, collegamenti ipertestuali inline e testo con formattazione come grassetto, corsivo o sottolineato. TextBlock fornisce un modello di contenuto più semplice, dunque in genere è più facile da usare e può garantire prestazioni di rendering del testo migliori rispetto a RichTextBlock. È il preferito per il testo dell'interfaccia utente della maggior parte delle app. Anche se puoi inserire interruzioni di riga nel testo, TextBlock è progettato per visualizzare un singolo paragrafo e non supporta il rientro del testo.

Per altre informazioni su come scegliere il controllo di testo più appropriato, vedi l'articolo Controlli di testo.

Consigli

Vedere Tipografia e Linee guida per i caratteri.

Piattaforma UWP e WinUI 2

Importante

Le informazioni e gli esempi in questo articolo sono ottimizzati per le app che usano Windows App SDK e WinUI 3, ma sono generalmente applicabili alle app UWP che usano WinUI 2. Per informazioni ed esempi specifici della piattaforma, consultare le indicazioni di riferimento sulle API UWP.

Questa sezione contiene informazioni necessarie per usare il controllo in un'app UWP o WinUI 2.

Le API per questo controllo sono presenti nello spazio dei nomi Windows.UI.Xaml.Controls.

È consigliabile usare la versione più recente di WinUI 2 per ottenere gli stili e i modelli più recenti per tutti i controlli. WinUI 2.2 o versioni successive include un nuovo modello per questo controllo che usa angoli arrotondati. Per altre informazioni, vedere Raggio dell'angolo.

Creare un blocco di testo RTF

L'app Raccolta WinUI 3 include esempi interattivi della maggior parte dei controlli e delle funzionalità di WinUI 3. Scaricare l'app da Microsoft Store od ottenere il codice sorgente su GitHub

La proprietà contenuto di RichTextBlock è la proprietà Blocchi, che supporta il testo basato su paragrafo tramite l'elemento Paragrafo. Non dispone di una proprietà Testo che è possibile usare per accedere facilmente al contenuto di testo del controllo nell'app. RichTextBlock, tuttavia, fornisce alcune funzionalità esclusive non disponibili con TextBlock.

RichTextBlock supporta:

  • Più paragrafi. Impostare il rientro per i paragrafi impostando la proprietà TextIndent.
  • Elementi dell'interfaccia utente inline. Usare un elemento InlineUIContainer per visualizzare elementi dell'interfaccia utente come immagini, in linea con il testo.
  • Contenitori overflow. Usare gli elementi RichTextBlockOverflow per creare layout di testo a più colonne.

Paragrafi

Usare gli elementi Paragraph per definire i blocchi di testo da visualizzare in un controllo RichTextBlock. Ogni RichTextBlock deve includere almeno un paragrafo.

È possibile impostare il rientro per tutti i paragrafi in un controllo RichTextBlock impostando la proprietà RichTextBlock.TextIndent. È possibile eseguire l'override di questa impostazione per paragrafi specifici in RichTextBlock impostando la proprietà Paragraph.TextIndent su un valore diverso.

<RichTextBlock TextIndent="12">
  <Paragraph TextIndent="24">First paragraph.</Paragraph>
  <Paragraph>Second paragraph.</Paragraph>
  <Paragraph>Third paragraph. <Bold>With an inline.</Bold></Paragraph>
</RichTextBlock>

Elementi dell'interfaccia utente inline

La classe InlineUIContainer permette di incorporare qualsiasi UIElement in linea con il testo. Uno scenario comune consiste nell'inserire un elemento Image in linea con il testo, tuttavia è possibile usare elementi interattivi come Button o CheckBox.

Per incorporare più elementi inline nella stessa posizione, usare un pannello come singolo elemento figlio InlineUIContainer e posizionare gli elementi all'interno di quel pannello.

Questo esempio mostra come usare un elemento InlineUIContainer per inserire un'immagine in un controllo RichTextBlock.

<RichTextBlock>
    <Paragraph>
        <Italic>This is an inline image.</Italic>
        <InlineUIContainer>
            <Image Source="Assets/Square44x44Logo.png" Height="30" Width="30"/>
        </InlineUIContainer>
        Mauris auctor tincidunt auctor.
    </Paragraph>
</RichTextBlock>

Contenitori overflow

È possibile usare un controllo RichTextBlock con RichTextBlockOverflow per creare layout di pagina avanzati come quelli a più colonne. Il contenuto di un elemento RichTextBlockOverflow proviene sempre da un elemento RichTextBlock. Collegare gli elementi RichTextBlockOverflow impostandoli come elemento OverflowContentTarget di un controllo RichTextBlock o di un altro controllo RichTextBlockOverflow.

Ecco un semplice esempio che crea un layout a due colonne. Per un esempio più complesso, vedere la sezione Esempi.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <RichTextBlock Grid.Column="0" 
                   OverflowContentTarget="{Binding ElementName=overflowContainer}" >
        <Paragraph>
            Proin ac metus at quam luctus ultricies.
        </Paragraph>
    </RichTextBlock>
    <RichTextBlockOverflow x:Name="overflowContainer" Grid.Column="1"/>
</Grid>

Formattazione di testo

Anche se RichTextBlock archivia testo normale, è possibile applicare varie opzioni di formattazione per personalizzare il rendering del testo nell'app. È possibile impostare proprietà di controlli standard come FontFamily, FontSize, FontStyle, Foreground e CharacterSpacing per modificare l'aspetto del testo. È anche possibile usare elementi di testo inline e proprietà associate Typography per formattare il testo. Queste opzioni influiscono solo sul modo in cui RichTextBlock mostra il testo localmente, pertanto se si copia e incolla il testo in un controllo di testo RTF, ad esempio, non viene applicata alcuna formattazione.

Elementi inline

Lo spazio dei nomi Microsoft.UI.Xaml.Documents fornisce una varietà di elementi di testo inline che è possibile usare per formattare il testo come Bold, Italic, Run, Span e LineBreak. Un modo tipico per applicare la formattazione a sezioni di testo consiste nell'inserire il testo in un elemento Run o Span e nell'impostare le proprietà su quell'elemento.

Ecco un paragrafo con la prima frase mostrata in grassetto, con il colore blu e le dimensioni 16pt.

<Paragraph>
    <Bold><Span Foreground="DarkSlateBlue" FontSize="16">Lorem ipsum dolor sit amet</Span></Bold>
    , consectetur adipiscing elit.
</Paragraph>

Tipografia

Le proprietà associate della classe Typography consentono di accedere a un set di proprietà tipografiche Microsoft OpenType. È possibile impostare queste proprietà associate su RichTextBlock o su singoli elementi di testo inline, come illustrato di seguito.

<RichTextBlock Typography.StylisticSet4="True">
    <Paragraph>
        <Span Typography.Capitals="SmallCaps">Lorem ipsum dolor sit amet</Span>
        , consectetur adipiscing elit.
    </Paragraph>
</RichTextBlock>

Scaricare il codice di esempio

Controlli di testo

Per progettisti

Per sviluppatori (XAML)

Per sviluppatori (altro)