2011-09-27 30 views
0

我在WPF應用程序中有一個RichTextBox。我想對每行文本應用備用着色。我已將Background屬性設置爲所需的顏色,但由於文本長度的差異,只有包含文本的部分纔會獲取背景顏色。如何設置屬性,以便將整行設置爲所需的背景色。將文本背景顏色應用於整行文本

一個非優雅的解決方案是填充一些空格,但如果RichTextBox佈局更改,則需要通過試錯法來更改代碼。

有沒有更好的方法?

+0

你可以請你發佈你的代碼如何定義顏色? –

+0

你能解釋用戶的操作嗎?我應該認爲這是你正在做的事情...... 1.在對方下面輸入3條線。 2.選擇其中一行並設置背景顏色。 3.期望背景橫跨該行的富文本框/水平滾動條的寬度? –

+0

@AngelWPF:不會有任何水平滾動條。寬度是固定的。這就像備選着色人員列出的,以減少閱讀的痛苦。 –

回答

0

我想知道如何使用動態生成的項目進行這項工作。對於我的實際情況,我使用了額外的空間。現在,這是我走的路。

0

如果所有的線條都是一樣的高度,那麼你可以申請一個背景圖片給RichTextBox本身,這將有同樣的效果(組尺寸/顏色如適用):

<RichTexBox> 
    <RichTexBox.Background> 
      <VisualBrush TileMode="Tile" Viewport="0 0 100 100" ViewportUnits="Absolute"> 
       <VisualBrush.Visual> 
        <StackPanel> 
         <Rectangle Width="100" Height="50" Fill="Red" /> 
         <Rectangle Width="100" Height="50" Fill="Blue" /> 
        </StackPanel> 
       </VisualBrush.Visual> 
      </VisualBrush> 
    </RichTexBox.Background> 
</RichTexBox> 
+0

這些行是動態生成的,所以我不會將這個現有的XAML代碼調整爲執行任務。雖然,我還沒有嘗試過你所建議的方法,但是它可以工作超過三行嗎? –

0

嘗試使用List其中突出顯示具有背景顏色的行的行。當有人更改RichTextBox.TextChanged事件中的文本時,刷新ListItem集合(根據文本中的行數)。

<RichTextBox> 
     <RichTextBox.Document> 
      <FlowDocument> 
       <List> 
        <ListItem Background="Red" /> 
        <ListItem Background="Green"/> 
        <ListItem Background="Yellow"/> 
       </List> 
      </FlowDocument> 
     </RichTextBox.Document> 
    </RichTextBox> 

我想你可以改變符號看N乘重寫它的風格感覺名單。