Name des Programms:
RegexTextBox
Beschreibung:
Die Bibliothek stellt ein auf der WPF Textbox (System.Windows.Controls.TextBox) bestehendes Control bereit, welches für jede Änderung der Text-Eigenschaft diese über einen zugeordneten regulären Ausdruck (RegEx-Eigenschaft) validiert und das Ergebnis dieser Validierung über die TextValid-Eigenschaft bereitstellt. Zudem ist eine visuelle Hervorhebung für den Fall eines unzulässigen Inhalts über die HighlightIfInvalid-Eigenschaft möglich. Alle Eigenschaften (TextValid, RegEx, HighlightIfInvalid) sind als DependencyProperties implementiert und können somit in XAML eingesetzt werden sowie über WPF-Technologien wie Binding oder Trigger angesteuert werden.
Screenshots:
Verwendete Programmiersprache(n) und IDE(s):
C# (Visual Studio Ultimate 2013)
Systemanforderungen:
.NET Framework 3.5
Download(s):
Bibliothek (DLL): RegexTextBox_dll.zip
Projekt: RegexTextBox.zip
Lizenz/Weitergabe:
MIT-Lizenz
Anleitung:
Wie die Projektdatei oder die DLL in ein Projekt eingebunden wird, setze ich als Vorwissen voraus, ebenso wie man fremde eingebundene Bibliotheken in C#/VB.NET oder XAML nutzt.
In obigen Beispiel wird eine RegexTextBox im XAML-Dokument erzeugt und ihr werden ein regulärer Ausdruck zur Validierung sowie die HighlightIfInvalid-Eigenschaft gesetzt, um die Textbox im ungültigen Zustand farblich hervorzuheben. Auf diese Eigenschaft wird ein Binding zur IsChecked-Eigenschaft einer Checkbox (chk) gesetzt.
In diesem Beispiel wird die IsEnabled-Eigenschaft eines Button auf die schreibgeschützte TextValid-Eigenschaft einer RegexTextBox (regexBox) gebunden, somit kann der Button nur benutzt werden, wenn der Inhalt der Textbox den zugeordneten regulären Ausdruck erfüllt. Auf diese Weise wäre es möglich, das Fortfahren in einem Programm erst zu ermöglichen, wenn der Text in der Textbox den Anforderungen entspricht (bspw. in einem Settings-Dialog).
Im letzten Beispiel wird ein Trigger verwendet, um benutzerdefiniert valide von nicht validen Eingaben zu unterscheiden. Dazu sollte die HighlightIfInvalid-Eigenschaft auf "false" gesetzt werden, damit diese die Background-Eigenschaft der zugrundeliegenden TextBox nicht überschreibt.
RegexTextBox
Beschreibung:
Die Bibliothek stellt ein auf der WPF Textbox (System.Windows.Controls.TextBox) bestehendes Control bereit, welches für jede Änderung der Text-Eigenschaft diese über einen zugeordneten regulären Ausdruck (RegEx-Eigenschaft) validiert und das Ergebnis dieser Validierung über die TextValid-Eigenschaft bereitstellt. Zudem ist eine visuelle Hervorhebung für den Fall eines unzulässigen Inhalts über die HighlightIfInvalid-Eigenschaft möglich. Alle Eigenschaften (TextValid, RegEx, HighlightIfInvalid) sind als DependencyProperties implementiert und können somit in XAML eingesetzt werden sowie über WPF-Technologien wie Binding oder Trigger angesteuert werden.
Screenshots:
Verwendete Programmiersprache(n) und IDE(s):
C# (Visual Studio Ultimate 2013)
Systemanforderungen:
.NET Framework 3.5
Download(s):
Bibliothek (DLL): RegexTextBox_dll.zip
Projekt: RegexTextBox.zip
Lizenz/Weitergabe:
MIT-Lizenz
Anleitung:
Wie die Projektdatei oder die DLL in ein Projekt eingebunden wird, setze ich als Vorwissen voraus, ebenso wie man fremde eingebundene Bibliotheken in C#/VB.NET oder XAML nutzt.
In obigen Beispiel wird eine RegexTextBox im XAML-Dokument erzeugt und ihr werden ein regulärer Ausdruck zur Validierung sowie die HighlightIfInvalid-Eigenschaft gesetzt, um die Textbox im ungültigen Zustand farblich hervorzuheben. Auf diese Eigenschaft wird ein Binding zur IsChecked-Eigenschaft einer Checkbox (chk) gesetzt.
In diesem Beispiel wird die IsEnabled-Eigenschaft eines Button auf die schreibgeschützte TextValid-Eigenschaft einer RegexTextBox (regexBox) gebunden, somit kann der Button nur benutzt werden, wenn der Inhalt der Textbox den zugeordneten regulären Ausdruck erfüllt. Auf diese Weise wäre es möglich, das Fortfahren in einem Programm erst zu ermöglichen, wenn der Text in der Textbox den Anforderungen entspricht (bspw. in einem Settings-Dialog).
XML-Quellcode
- <regex:RegexTextBox Name="regexBox" RegEx="^[0-9]{1,4}$" HighlightIfInvalid="False" Text="Test">
- <regex:RegexTextBox.Style>
- <Style TargetType="regex:RegexTextBox">
- <Setter Property="Background" Value="Green" />
- <Style.Triggers>
- <Trigger Property="TextValid" Value="False" >
- <Setter Property="Background" Value="Red" />
- </Trigger>
- </Style.Triggers>
- </Style>
- </regex:RegexTextBox.Style>
- </regex:RegexTextBox>
Im letzten Beispiel wird ein Trigger verwendet, um benutzerdefiniert valide von nicht validen Eingaben zu unterscheiden. Dazu sollte die HighlightIfInvalid-Eigenschaft auf "false" gesetzt werden, damit diese die Background-Eigenschaft der zugrundeliegenden TextBox nicht überschreibt.