2011-10-20 12 views
5

Ho uno stile WPF che imposta la proprietà di dipendenza TextDecorations per TargetType: TexBlock. Ho bisogno di usare lo stesso stile per certi elementi di Run che sono in alcuni TextBlock che non usano di per sé lo stile sopra menzionato. Come posso ottenere questo risultato senza ripetere lo stesso stile con solo un diverso TargetType?Usa lo stesso stile per l'elemento TextBlock e Run

risposta

5

Proprio non si specifica un TargetType ma qualificare la proprietà, ad esempio:

<Style x:Key="CommonStyle"> 
    <Setter Property="Inline.TextDecorations" Value="StrikeThrough" /> 
</Style> 
<TextBlock Style="{StaticResource CommonStyle}" Text="Lorem Ipsum" /> 
<TextBlock> 
    <Run Style="{StaticResource CommonStyle}" Text="Lorem" /> 
    <Run Text="Ipsum" /> 
</TextBlock> 

Se si vuole sviluppare ulteriormente lo stile è possibile utilizzare BasedOn, questo permette anche applicazione implicita di tale stile non impostando una chiave sullo stile derivato.

+0

Wow. Ho provato la stessa cosa, ma ho impostato 'Property =" TextDecorations "' invece di 'Property =" Inline.TextDecorations "', e ho ottenuto l'errore "FrameworkElement non contiene ...". Aggiunta di "In linea". funziona davvero. –

+0

Sono interessato al meccanismo sottostante che consente questo, potresti per favore versare qualche luce o alcuni link? –

+0

@ H.B. - C'è un modo per rilevare questo senza riflettere il codice? È indicato in MSDN da qualche parte che 'TextBlock.TextDecorations' 'sequestra' il' Inline.TextDecorations'? –

Problemi correlati