Wie können Sie den markierten Text Farbe für eine WPF TextBox ändern?
-
03-07-2019 - |
Frage
Die WPF TextBox
macht native Verwendung der System Highlight Farbe für den Hintergrund des ausgewählten Textes zu malen. Ich möchte dies außer Kraft zu setzen und es im Einklang, da sie von OS / Benutzer Thema variiert.
Für ListBoxItem
s gibt es eine HINWEIS: Diese Verhalten scheint WPF 4.
Lösung
Wie Steve erwähnt: Hinweis: Dieses Verhalten scheint zu WPF 4.
ich in das gleiche Problem gestoßen.
Wie Dr.WPF sagt
"Es ist völlig unmöglich, in der aktuelle .NET-Versionen (3.0 und 3.5 Beta). Die Steuerung ist fest einprogrammiert zu Verwenden Sie die Systemeinstellung ... es funktioniert nicht Blick auf die Steuervorlage überhaupt nicht. "
http: //social.msdn.microsoft.com/Forums/en-US/wpf/thread/bbffa6e3-2745-4e72-80d0-9cdedeb69f7f/
Andere Tipps
Da .NET 4, TextBoxBase.SelectionBrush
zB
<TextBox SelectionBrush="Red" SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
Dies ist ein Windows 8.1 .Net 4.6.1 getestet Lösung der SelectionBrush
jeden TextBox
in der App anzupassen:
/// 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;
}
Wenn Sie möchten, schließen RichTextBox
Typname TextBox
4 mal durch TextBoxBase
zu ersetzen.
Sie können einen Style für die TextBox schaffen und einen Setter für den Hintergrund schreiben. Der TextBox Stil sollte eine Standard sein, so dass jede TextBox, die unter der visuellen Struktur kommt, wird die geänderte TextBox bekommen
<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
Versuchen Sie folgendes:
<Trigger Property="IsHighlighted" Value="True">
<Setter TargetName="Border" Property="Background" Value="OrangeRed"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>