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