2012-02-15 6 views
14

Ho trovato alcune cose sull'impostazione di CaretBrushes in WPF4, ma qualcuno in realtà ha mai cambiato il cursore stesso?TextBox Caret Styling

Quello che mi piacerebbe fare è utilizzare il cursore OVERWRITE in modalità INSERT. Ho visto un hack from .Net 3.5 times, ma è unperformant e manca dietro il movimento del cursore attuale ...

Sarebbe bello se il Caret ha avuto un Template - Questo sarebbe coerente con l'idea WPF ...

Qualche consiglio?

+0

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

risposta

27

Il CaretElement è una classe interna sigillata e non è possibile personalizzare tramite un modello di dati, ad esempio. Almeno, la spazzola del pettine è possibile cambiare.

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

Se si desidera avere un gradiente lineare sul pennello del cursore, è possibile farlo.

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

Ho provato ad utilizzare un Visual pennello anche, ma il cursore è sempre viene mostrato come una piccola linea verticale.

7

Poiché il framework utilizza l'inverso del colore di sfondo per impostare il colore del punto di inserimento, se si imposta la proprietà Background su {x: Null}, si finirà con il carattere di default nero, che su uno sfondo nero può essere particolarmente difficile da vedere!

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

La semplice soluzione a questo problema è specificare in realtà un valore per la proprietà di sfondo. Nel caso in cui si disponga di uno sfondo nero e si desideri un punto di bianco, è possibile impostare il valore della proprietà Background su # 00000000, che è completamente nero trasparente (se ciò ha senso!). Il framework sembra ignorare il componente di opacità del colore in modo da ottenere uno sfondo trasparente e un segno bianco!

E un altro link: http://blogs.msdn.com/b/llobo/archive/2007/02/08/changing-caret-color-in-textbox.aspx

+1

funziona w/framework 3.0 – stackuser83