wpf textbox styles caret

wpf - TextBox Caret Styling



styles (2)

He encontrado algunas cosas sobre la configuración de CaretBrushes en WPF4, pero ¿alguien ha cambiado el caret?

Lo que me gustaría hacer es usar el cursor OVERWRITE en modo INSERTAR. He visto un hack de .Net 3.5 veces , pero no funciona y carece del movimiento real del cursor ...

Sería fantástico si el Caret tuviera una plantilla. Eso sería coherente con toda la idea de WPF ...

¿Algún consejo?


Debido a que el marco usa la inversa del color de fondo para establecer el color de la marca, si establece la propiedad de fondo en {x: Null}, terminará con la marca negra predeterminada, 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 para este problema es realmente especificar un valor para la propiedad Fondo. En el caso de que tenga un fondo negro y desee un cursor blanco, puede establecer el valor de la propiedad Fondo en # 00000000, que es completamente transparente en negro (¡si eso tiene sentido!). ¡El marco parece ignorar el componente de opacidad del color, por lo que terminas con un fondo transparente y un cursor blanco!

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


CaretElement es una clase interna sellada y no es posible personalizarla a través de una plantilla de datos, por ejemplo. Al menos, es posible cambiar el cepillo de caret.

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

Si desea tener un degradado lineal en el pincel de caret, puede hacerlo.

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

También intenté usar un Pincel visual, pero el caret siempre se muestra como una pequeña línea vertical.