読者です 読者をやめる 読者になる 読者になる

WindowsストアアプリのTextboxの入力チェック方法

Windows Store App

こんな感じで必須フィールドに何も入力する場合にフィールドを赤くするなどののチェックとかしたい場合、

WindowsストアアプリのTextBoxではこういった簡易入力チェック機能が無いようです。そこでで調べてみるとWinRT XAML Toolkitに入っているとのこと。
xaml - Windows 8 Metro: Implementing Validation - Stack Overflow



しかし、TextBoxValidationExtensionsというモジュールが必要なのですが、どうもNugetからWinRT XAML Toolkitをダウンロードしてもダウンロードの仕方がおかしいのかTextBoxValidationExtensionsがWinRTXamlToolkit.Controls.Extensionsの下に見つかりませんでした。




そこでCodePlexから直接コードを持ってくることにしました。
必要なC#コードは以下の2つです。このコードをコピーしてプロジェクトに追加します。

TextBoxFormatValidationHandler.cs
 
TextBoxValidationExtensions.cs
 
 

namespaceをそのまま変えなかった場合は以下のように書けば実装できるはずです。namespace変えた場合はそれに伴ってusingの部分を変更すればいけます。

<Page
 --省略
 xmlns:Extensions="using:WinRTXamlToolkit.Controls.Extensions"
 --省略
 >
<!-- 省略 -->
<TextBox
    Width="400"
  Height="25"
    Extensions:TextBoxValidationExtensions.Format="NonEmptyNumeric"
    Extensions:TextBoxValidationExtensions.InvalidBrush="Red"
    Extensions:TextBoxValidationExtensions.ValidBrush="Green" />


なお、この機能でチェックできる内容はこちらの通りです。

public enum ValidTextBoxFormats
    {
        /// <summary>
        /// Any content is valid.
        /// </summary>
        Any = 0,
        /// <summary>
        /// Text property can't be empty.
        /// </summary>
        NonEmpty = 1,
        /// <summary>
        /// Text property needs to be numeric (parse to a double).
        /// </summary>
        Numeric = 2,
        /// <summary>
        /// Text property needs to be numeric (parse to a double) and non-empty.
        /// </summary>
        NonEmptyNumeric = 3
    }