TextBox Caret造型

时间:2012-02-15 09:20:21

标签: wpf textbox styles caret

我在WPF4中设置CaretBrushes时发现了一些事情,但是有没有人真的改变了插入符本身?

我想要做的是在INSERT模式下使用OVERWRITE插入符号。我见过一个hack from .Net 3.5 times,但它没有表现,并且缺乏实际的光标移动......

如果Caret有一个模板会很棒 - 这与WPF的整个想法是一致的......

有什么建议吗?

2 个答案:

答案 0 :(得分:35)

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,但是插入符总是显示为一条小垂直线。

答案 1 :(得分:8)

  

因为框架使用背景颜色的反转来设置插入符的颜色,如果将Background属性设置为{x:Null},那么最终会得到默认的黑色插入符号,它在黑色背景上可能特别难看!

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

  

此问题的简单解决方案是实际指定Background属性的值。如果您有黑色背景并想要一个白色插入符,您可以将Background属性的值设置为#00000000,这是完全透明的黑色(如果这有意义!)。该框架似乎忽略了颜色的不透明度组件,因此您最终得到了透明背景和白色插入符号!

还有一个链接: http://blogs.msdn.com/b/llobo/archive/2007/02/08/changing-caret-color-in-textbox.aspx