文本框插入符样式设置

28

我发现了一些关于在WPF4中设置CaretBrushes的内容,但是有人真正改变过光标本身吗?

我想要做的是在INSERT模式下使用OVERWRITE光标。我看到了一个.NET 3.5时代的hack,但它性能不佳,落后于实际光标移动...

如果Caret有一个模板就好了 - 那将与整个WPF理念保持一致...

有什么建议吗?


请参见http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox。 - Lynn Crumbling
2个回答

56

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


13
由于该框架使用背景颜色的反色来设置插入符号的颜色,如果将Background属性设置为{x:Null},则会得到默认的黑色插入符号,在黑色背景下可能特别难以看清!

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

这个问题的简单解决方案是实际上指定背景属性的值。在您有黑色背景并且想要白色插入符号的情况下,您可以将Background属性的值设置为#00000000,这是完全透明的黑色(如果有意义的话!)。该框架似乎忽略颜色的不透明度组件,因此您最终会得到一个透明的背景和一个白色的插入符号!
结论:您必须指定带有不透明度的背景属性以控制插入符号的样式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接