我发现了一些关于在WPF4中设置CaretBrushes的东西,但有人真的改变过插入符号本身吗?
我想做的是在INSERT模式下使用OVERWRITE插入符号。我已经看到了3.5次来自.Net的黑客攻击,但它没有表现出来,而且缺乏实际的光标移动。。。
如果Caret有一个模板就太好了——这将与整个WPF的想法一致。。。
有什么建议吗?
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 Brush,但插入符号总是显示为一条小的垂直线。
因为框架使用背景颜色的倒数来设置插入符号的颜色,如果将Background属性设置为{x:Null},那么最终将使用默认的黑色插入符号,在黑色背景上可能特别难看到!
http://www.codeproject.com/Articles/34736/Changing-the-Caret-Colour-in-WPF
这个问题的简单解决方案实际上是为Background属性指定一个值。如果您有黑色背景,并且需要白色插入符号,您可以将background属性的值设置为#000000000,它是完全透明的黑色(如果有意义的话!)框架似乎忽略了颜色的不透明度分量,因此您最终得到的是透明背景和白色插入符号!
结论:您必须指定具有不透明度的背景属性来控制插入符号样式。