2014-04-07 13 views
1

我想突出顯示TextBlock中的單詞。這個詞由幾個不同格式的運行組成。斜體文本被下一次運行的背景截斷。斜體文本被下一次運行的背景截斷。我如何突出顯示這些文字?

亮點與背景

我做了高亮半透明的,所以你可以看到被切斷。

<TextBlock> 
    <Run Text="Before " /> 
    <Span Background="#80ffff00"> 
     <Run FontStyle="Italic" Text="T" /><Run Text="ext" /> 
    </Span> 
    <Run Text=" after." /> 
</TextBlock> 

"cut off with background" screenshot

突出顯示TextDecoration

我發現的最接近的解決方法是用TextDecorations以突出顯示它。但在這種情況下,我必須設置半透明的高光,文字不再是黑色,因爲它是由文字裝飾覆蓋的。

<TextBlock> 
    <Run Text="Before " /> 
    <Span> 
     <Span.TextDecorations> 
      <TextDecoration Location="Strikethrough" 
          PenThicknessUnit="FontRenderingEmSize" 
          PenOffset="0.5"> 
       <TextDecoration.Pen> 
        <Pen Brush="#80ffff00" Thickness="1" /> 
       </TextDecoration.Pen> 
      </TextDecoration> 
     </Span.TextDecorations> 
     <Run FontStyle="Italic" Text="T" /><Run Text="ext" /> 
    </Span> 
    <Run Text=" after." /> 
</TextBlock> 

"text is no longer black" screenshot

您能給任何想法我怎麼能彰顯這樣的文本?

+1

它試圖用RichTextBox和同樣的問題的FlowDocument。 – Paparazzi

回答

2

我注意到斜體文字的相似截止在我的應用程序。我通過使用下面的樣式來自動爲所有運行控件提供透明背景。我不知道這是否能解決你的問題,但它解決了我的問題。

注意:這可能通過給所有運行產生意想不到的後果控制一個透明的背景 - 我在WPF一個新手。

<Style TargetType="{x:Type Run}"> 
     <Setter Property="Background" Value="Transparent"/> 
    </Style> 

這裏是沒有的風格 - 請注意這個詞下降是斜體,但逗號不是,所以是被截斷: italicized word fall with l cut off by non-italicized comma

這裏的風格是 - 通知該逗號不再切斷litalicized word fall with l not cut off by non-italicized comma

+0

我需要文字高亮。當我給所有Run元素一個透明的背景時,跨度的背景也變得透明。 – filhit