2012-02-15 79 views
14

Tôi đã tìm thấy một vài điều về thiết lập CaretBrushes trong WPF4, nhưng có ai thực sự từng thay đổi chính bản thân mình không?TextBox Caret Styling

Điều tôi muốn làm là sử dụng dấu nháy OVERWRITE trong chế độ INSERT. Tôi đã nhìn thấy một hack from .Net 3.5 times, nhưng nó là unperformant và thiếu đằng sau con trỏ di chuyển thực tế ...

Nó sẽ là tuyệt vời nếu các Caret đã có một Template - Đó sẽ là phù hợp với toàn bộ ý tưởng WPF ...

Bạn có lời khuyên nào không?

+0

Xem http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox –

Trả lời

27

CaretElement là một lớp được niêm phong bên trong và không thể tùy chỉnh thông qua mẫu dữ liệu chẳng hạn. Ít nhất, bàn chải caret có thể thay đổi.

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

Nếu bạn muốn có độ dốc tuyến tính trên bàn chải caret, điều này có thể được thực hiện.

<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> 

tôi đã cố gắng sử dụng một Visual Cọ cũng được, nhưng caret luôn luôn được hiển thị như một đường thẳng đứng nhỏ.

7

Vì khung sử dụng nghịch đảo của màu nền để đặt màu của dấu mũ, nếu bạn đặt thuộc tính nền thành {x: Null}, thì bạn sẽ kết thúc với dấu mũ đen mặc định, một nền đen có thể đặc biệt khó nhìn thấy!

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

Giải pháp đơn giản cho vấn đề này là để thực sự định giá trị cho thuộc tính Background. Trong trường hợp bạn có một nền đen và muốn một dấu trắng, bạn có thể đặt giá trị của thuộc tính Nền thành # 00000000, màu đen hoàn toàn trong suốt (nếu điều đó có ý nghĩa!). Khuôn khổ xuất hiện để bỏ qua thành phần độ mờ của màu sắc, do đó bạn kết thúc với một nền trong suốt và một dấu nháy màu trắng!

Và thêm một liên kết: http://blogs.msdn.com/b/llobo/archive/2007/02/08/changing-caret-color-in-textbox.aspx

+1

làm việc w/framework 3.0 – stackuser83