RegexTextBox

    • Release
    • Open Source
      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.

      XML-Quellcode

      1. <regex:RegexTextBox RegEx="^[0-9]{1,4}$" HighlightIfInvalid="{Binding IsChecked, ElementName=chk}" />


      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.

      XML-Quellcode

      1. <Button IsEnabled="{Binding TextValid, ElementName=regexBox}" Content="Next" />


      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

      1. <regex:RegexTextBox Name="regexBox" RegEx="^[0-9]{1,4}$" HighlightIfInvalid="False" Text="Test">
      2. <regex:RegexTextBox.Style>
      3. <Style TargetType="regex:RegexTextBox">
      4. <Setter Property="Background" Value="Green" />
      5. <Style.Triggers>
      6. <Trigger Property="TextValid" Value="False" >
      7. <Setter Property="Background" Value="Red" />
      8. </Trigger>
      9. </Style.Triggers>
      10. </Style>
      11. </regex:RegexTextBox.Style>
      12. </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.