Стилизация каретки TextBox

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

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

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

Любой совет?


person Sebastian Edelmeier    schedule 15.02.2012    source источник


Ответы (2)


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>

I tried using a Visual Brush also, but the caret is always being shown as a small vertical line.

person Tore Aurstad    schedule 15.04.2012

Поскольку фреймворк использует инверсию цвета фона для установки цвета курсора, если вы установите для свойства фона значение {x:Null}, вы получите черный курсор по умолчанию, который на черном фоне может быть особенно трудно увидеть!

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

Простое решение этой проблемы — фактически указать значение для свойства Background. В случае, когда у вас черный фон и вы хотите белый курсор, вы можете установить значение свойства Background равным #00000000, что означает полностью прозрачный черный цвет (если это имеет смысл!). Похоже, что фреймворк игнорирует компонент непрозрачности цвета, поэтому вы получаете прозрачный фон и белый значок вставки!

Вывод: вы должны указать свойство фона с непрозрачностью, чтобы управлять стилем каретки.

person Ievgen Naida    schedule 24.08.2013