Edit this page

How to Create Custom Mask Tokens

You can find a list of all built-in mask tokens that you can use when defining the mask of the RadMaskedInput controls in the Mask Tokens article. However, when your scenario requirements cannot be implemented using the built-in tokens, you can create a custom mask token to better fit your needs.

In order to create a custom mask token, you need to define a new class that should implement the ITokenValidationRule interface.

[C#] Example 1: Creating custom class which inherits ITokenValidationRule interface

using System.Linq;
using Telerik.Windows.Controls.MaskedInput.Tokens;

public class CustomToken : ITokenValidationRule
{
    public bool IsRequired
    {
        get { throw new NotImplementedException(); }
    }

    public bool IsValid(char ch)
    {
        throw new NotImplementedException();
    }

    public char Token
    {
        get { throw new NotImplementedException(); }
    }

    public TokenTypes Type
    {
        get { throw new NotImplementedException(); }
    }

    public string ValidChars
    {
        get { throw new NotImplementedException(); }
    }
}

[VB.NET] Example 1: Creating custom class which inherits ITokenValidationRule interface

Public Class CustomToken
    Implements ITokenValidationRule

    Public ReadOnly Property IsRequired() As Boolean Implements ITokenValidationRule.IsRequired
        Get
            Throw New NotImplementedException()
        End Get
    End Property

    Public Function IsValid(ByVal ch As Char) As Boolean Implements ITokenValidationRule.IsValid

        Throw New NotImplementedException()
    End Function

    Public ReadOnly Property Token() As Char Implements ITokenValidationRule.Token
        Get
            Throw New NotImplementedException()
        End Get
    End Property

    Public ReadOnly Property Type() As TokenTypes Implements ITokenValidationRule.Type
        Get
            Throw New NotImplementedException()
        End Get
    End Property

    Public ReadOnly Property ValidChars() As String Implements ITokenValidationRule.ValidChars
        Get
            Throw New NotImplementedException()
        End Get
    End Property
End Class

Then you can start configuring the custom token through the following properties:

  • IsRequired- this property is of type bool and it defines if the value that the token represents is a required input.

  • Token - this property is of type char and it keeps the char that represents the custom mask token.

  • Type - this property is an enumeration of type TokenTypes and it represents the type of the token. The TokenTypes enumeration exposes the following values:

    • AlphaNumeric - tokens that represent a combination of alphabetic and numeric characters;
    • Date - tokens that represent DateTime values;
  • Modifier - characters that modify the entered input.

  • ValidChars - this property is of type string and it holds the string of characters that the mask token will represent.

[C#] Example 2: Create CustomToken class

public class CustomToken : ITokenValidationRule
{
    public bool IsRequired
    {
        get { return false; }
    }
    public bool IsValid(char ch)
    {
        throw new NotImplementedException();
    }
    public char Token
    {
        get { return '$'; }
    }
    public TokenTypes Type
    {
        get { return TokenTypes.AlphaNumeric; }
    }
    private string myValidChars = "0123456789#*";
    public string ValidChars
    {
        get { return myValidChars; }
    }
}

[VB.NET] Example 2: Create CustomToken class

Public Class CustomToken
    Implements ITokenValidationRule
    Public ReadOnly Property IsRequired() As Boolean Implements ITokenValidationRule.IsRequired
        Get
            Return False
        End Get
    End Property
    Public Function IsValid(ByVal ch As Char) As Boolean Implements ITokenValidationRule.IsValid
        Throw New NotImplementedException()
    End Function
    Public ReadOnly Property Token() As Char Implements ITokenValidationRule.Token
        Get
            Return "$"c
        End Get
    End Property
    Public ReadOnly Property Type() As TokenTypes Implements ITokenValidationRule.Type
        Get
            Return TokenTypes.AlphaNumeric
        End Get
    End Property
    Private myValidChars As String = "0123456789#*"
    Public ReadOnly Property ValidChars() As String Implements ITokenValidationRule.ValidChars
        Get
            Return myValidChars
        End Get
    End Property
End Class

When you define the properties that describe the custom token, you need to implement a logic that controls whether the entered character is valid for that custom token. This logic should be placed in the IsValid() method, that should validate the user input to return a bool value.

[C#] Example 3: Validating the entered character

public bool IsValid(char ch)
{
    return ValidChars.Contains(ch);
}

[VB.NET] Example 3: Validating the entered character

Public Function IsValid(ByVal ch As Char) As Boolean
    Return ValidChars.Contains(ch)
End Function

Finally our custom token will have the following dеfinition:

[C#] Example 4: Final custom token definition

public class CustomToken : ITokenValidationRule
{
    public bool IsRequired
    {
        get { return false; }
    }
    public bool IsValid(char character)
    {
        return ValidChars.Contains(character);
    }
    public char Token
    {
        get { return '$'; }
    }
    public TokenTypes Type
    {
        get { return TokenTypes.AlphaNumeric; }
    }
    private string myValidChars = "0123456789#*";
    public string ValidChars
    {
        get { return myValidChars; }
    }
}

[VB.NET] Example 4: Final custom token definition

Public Class CustomToken
    Implements ITokenValidationRule
    Public ReadOnly Property IsRequired() As Boolean Implements ITokenValidationRule.IsRequired
        Get
            Return False
        End Get
    End Property
    Public Function IsValid(ByVal ch As Char) As Boolean Implements ITokenValidationRule.IsValid
        Return ValidChars.Contains(ch)
    End Function
    Public ReadOnly Property Token() As Char Implements ITokenValidationRule.Token
        Get
            Return "$"c
        End Get
    End Property
    Public ReadOnly Property Type() As TokenTypes Implements ITokenValidationRule.Type
        Get
            Return TokenTypes.AlphaNumeric
        End Get
    End Property
    Private myValidChars As String = "0123456789#*"
    Public ReadOnly Property ValidChars() As String Implements ITokenValidationRule.ValidChars
        Get
            Return myValidChars
        End Get
    End Property
End Class

In order to use this custom token in the MaskedInput controls, you have to add it in the MaskedInput.Tokens using the TokenLocator class AddCustomValidationRule() method. This method takes as an argument an object of type ITokenValidationRule so you can pass the custom token.

After the custom token is added in the Tokens collection of the RadMaskedInput controls, you can use it in the RadMaskedTextInput control definition:

[XAML] Example 5: Defining RadMaskedTextInput control in XAML

<Grid Background="White">
    <telerik:RadMaskedTextInput Width="200" 
                                Margin="20 20 20 10"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                Mask="$$-$$$$-$$$$" />
</Grid>

radmaskedinput-howto-create-custom-token

See Also