WPF 텍스트 상자의 강조 표시된 텍스트 색상을 어떻게 변경할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/405967

문제

WPF TextBox 기본적으로 선택한 텍스트의 배경을 그리는 데 시스템 하이라이트 색상을 사용합니다. 나는 이것을 무시하고 OS/사용자 테마마다 다르기 때문에 일관되게 만들고 싶습니다.

을 위한 ListBoxItems, a가 있습니다 깔끔한 트릭 (아래 참조) 리소스 키를 재정의 할 수있는 경우 HighlightBrushKey 시스템을 사용자 정의하려면 집중된 설정에서 색상을 강조 표시합니다.

  <Style TargetType="ListBoxItem">
    <Style.Resources>
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGreen"/>
    </Style.Resources>
  </Style>

동일한 트릭이 작동하지 않습니다 TextBox 안타깝게도. 누구든지 다른 아이디어가 있습니까? ControlTemplate"?

제안 해주셔서 감사합니다!

참고 :이 동작은 WPF 4에 추가 된 것으로 보입니다.

도움이 되었습니까?

해결책

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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top