WPF 텍스트 상자의 강조 표시된 텍스트 색상을 어떻게 변경할 수 있습니까?
-
03-07-2019 - |
문제
WPF TextBox
기본적으로 선택한 텍스트의 배경을 그리는 데 시스템 하이라이트 색상을 사용합니다. 나는 이것을 무시하고 OS/사용자 테마마다 다르기 때문에 일관되게 만들고 싶습니다.
을 위한 ListBoxItem
s, a가 있습니다 깔끔한 트릭 (아래 참조) 리소스 키를 재정의 할 수있는 경우 HighlightBrushKey
시스템을 사용자 정의하려면 집중된 설정에서 색상을 강조 표시합니다.
<Style TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGreen"/>
</Style.Resources>
</Style>
동일한 트릭이 작동하지 않습니다 TextBox
안타깝게도. 누구든지 다른 아이디어가 있습니까? ControlTemplate
"?
제안 해주셔서 감사합니다!
해결책
Steve가 언급했듯이 : 참고 :이 동작은 WPF 4에 추가 된 것으로 보입니다.
나는 같은 문제에 부딪쳤다.
Dr.WPF가 말했듯이
"현재 .NET 릴리스 (3.0 & 3.5 베타)에서는 완전히 불가능합니다. 컨트롤은 시스템 설정을 사용하기 위해 하드 코딩되어 있습니다 ... 제어 템플릿을 전혀 보지 않습니다."
http://social.msdn.microsoft.com/forums/en-us/wpf/thread/bbffa6e3-2745-4e72-80d0-9cdedeb69f7f/
다른 팁
.NET 4 이후 TextBoxBase.SelectionBrush
예를 들어
<TextBox SelectionBrush="Red" SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
이것은 Windows 8.1 .net 4.6.1 테스트 된 솔루션입니다. SelectionBrush
각각 TextBox
앱에서 :
/// Constructor in App.xaml.cs
public App() : base()
{
// Register an additional SelectionChanged handler for appwide each TextBox
EventManager.RegisterClassHandler(typeof(TextBox), TextBox.SelectionChangedEvent, RoutedEventHandler(_textBox_selectionChanged));
}
private void _textBox_selectionChanged(object sender, RoutedEventArgs e)
{
// Customize background color of selected text
(sender as TextBox).SelectionBrush = Brushes.MediumOrchid;
// Customize opacity of background color
(sender as TextBox).SelectionOpacity = 0.5;
}
포함하려는 경우 RichTextBox
유형 이름을 바꾸십시오 TextBox
4 번 TextBoxBase
.
TextBox 용 스타일을 만들고 배경에 대한 세터를 작성할 수 있습니다. 텍스트 상자 스타일은 기본적으로 기본적이어야하므로 시각적 트리 아래에있는 텍스트 상자가 변경된 텍스트 상자가 나타납니다.
<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
이 시도:
<Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="Border" Property="Background" Value="OrangeRed"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>