2012-02-15 83 views
14

我發現了在WPF4中設置CaretBrushes的一些事情,但有沒有人曾經改變過插入符號本身?TextBox插入樣式

我想要做的是在插入模式下使用OVERWRITE插入符號。我見過一個hack from .Net 3.5 times,但它是unperformant,缺乏實際的背後光標移動...

這將是巨大的,如果插入符有一個模板 - 這將是與整個WPF觀點一致......

有什麼建議嗎?

+0

見http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox – 2015-06-09 17:28:27

回答

27

CaretElement是一個內部密封類,例如不能通過數據模板進行自定義。至少,脫字符筆可以改變。

<TextBox Text="This is some random text" CaretBrush="Blue" /> 

如果你想在插入筆刷上有一個線性漸變,可以這樣做。

<TextBox Text="This is some random text" FontSize="20"> 
     <TextBox.CaretBrush> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
       <LinearGradientBrush.GradientStops> 
        <GradientStop Color="Blue" Offset="0" /> 
        <GradientStop Color="Red" Offset="1" /> 
       </LinearGradientBrush.GradientStops> 
      </LinearGradientBrush> 
     </TextBox.CaretBrush> 

我試圖使用Visual刷還可以,但插入符號總是被示出爲小的垂直線。

7

因爲框架使用背景顏色的反色來設置插入符的顏色,所以如果將Background屬性設置爲{x:Null},那麼最終將使用默認的黑色插入符號黑色背景可能特別難以看到!

http://www.codeproject.com/Articles/34736/Changing-the-Caret-Colour-in-WPF

簡單的解決這個問題是實際指定背景屬性的值。如果你有一個黑色的背景,並且需要一個白色符號,你可以將背景屬性的值設置爲#00000000,這是完全透明的黑色(如果有意義!)。該框架似乎忽略了顏色的不透明組成部分,因此您最終得到的是透明背景和白色插頁!

還有一個鏈接: http://blogs.msdn.com/b/llobo/archive/2007/02/08/changing-caret-color-in-textbox.aspx

+1

工作瓦特/框架3.0 – stackuser83 2015-06-13 17:24:03