TextBox Caret Styling

Я нашел несколько вещей при настройке CaretBrushes в WPF4, но кто-нибудь действительно изменил сам карет?

Что я хотел бы сделать, это использовать каретки OVERWRITE в режиме INSERT. Я видел взломать из .NET в 3.5 раза, но он неэффективен и лишен фактического перемещения курсора...

Было бы здорово, если бы у Caret был шаблон - это было бы совместимо со всей идеей WPF...

Любые советы?

Ответы

Ответ 1

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, но каретка всегда отображается как небольшая вертикальная линия.

Ответ 2

Поскольку структура использует обратный цвет фона для установки цвета каретки, если вы установите для свойства 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