2012-02-15 23 views
14

He encontrado algunas cosas sobre la configuración de CaretBrushes en WPF4, pero, ¿alguna vez alguien realmente ha cambiado el cursor?TextBox Caret Styling

Lo que me gustaría hacer es utilizar el cursor de SOBREMESA en el modo INSERTAR. He visto un hack from .Net 3.5 times, pero es unperformant y carece de detrás de movimiento del cursor real ...

Sería muy bueno si el símbolo de intercalación tenía una plantilla - Eso sería consistente con la idea de WPF ...

¿Algún consejo?

+0

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

Respuesta

27

El CaretElement es una clase interna sellada y no se puede personalizar a través de una plantilla de datos, por ejemplo. Al menos, es posible cambiar el pincel de intercalación.

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

Si desea tener un degradado lineal en el pincel de intercalación, esto se puede hacer.

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

He intentado utilizar un Visual Brush también, pero el símbolo de intercalación siempre se está mostrando como una pequeña línea vertical.

7

Dado que el marco utiliza el inverso del color de fondo para establecer el color del símbolo de intercalación, si establece la propiedad de fondo en {x: nulo}, terminará con el símbolo negro caret, que en ¡un fondo negro puede ser particularmente difícil de ver!

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

La solución simple a este problema es especificar en realidad un valor para la propiedad de fondo. En el caso de que tenga un fondo negro y desee un símbolo de intercalación blanco, puede establecer el valor de la propiedad Fondo en # 00000000, que es totalmente negro transparente (¡si tiene sentido!). El marco parece ignorar el componente de opacidad del color, por lo que se obtiene un fondo transparente y un símbolo blanco.

Y un eslabón más: http://blogs.msdn.com/b/llobo/archive/2007/02/08/changing-caret-color-in-textbox.aspx

+1

funciona w/Framework 3.0 – stackuser83