Текстово поле Caret Styling

Намерих няколко неща за настройката на CaretBrushes в WPF4, но някой всъщност променял ли е самата каретка?

Това, което бих искал да направя, е да използвам каретката OVERWRITE в режим INSERT. Виждал съм хак от .Net 3.5 пъти, но е непроизводителен и липсва зад действителното движение на курсора...

Би било чудесно, ако Caret имаше шаблон - това би било в съответствие с цялата идея на WPF...

Някакъв съвет?


person Sebastian Edelmeier    schedule 15.02.2012    source източник
comment
Вижте codeproject.com/Articles/633935/   -  person Lynn Crumbling    schedule 09.06.2015


Отговори (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

Тъй като рамката използва обратното на цвета на фона, за да зададе цвета на каретката, ако зададете свойството Background на {x:Null}, тогава ще получите черната каретка по подразбиране, която на черен фон може да бъде особено трудно се вижда!

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

Простото решение на този проблем е всъщност да посочите стойност за свойството Background. В случай, че имате черен фон и искате бяла карета, можете да зададете стойността на свойството Background на #00000000, което е напълно прозрачно черно (ако това има смисъл!). Изглежда, че рамката игнорира компонента за непрозрачност на цвета, така че в крайна сметка получавате прозрачен фон и бял карет!

Заключение: Трябва да посочите свойството на фона с непрозрачност, за да контролирате стила на каретката.

person Ievgen Naida    schedule 24.08.2013