1

私は wpf が初めてで、showdialog ウィンドウの検証テキストボックスを作成しようとしています。空の dield とスペースの検証は既に行っていますが、ダイアログに渡した最大値よりも大きい数値の検証を追加する必要がありますが、ValidationRule クラスに使用する方法がわかりません。

これは私の ValidationRule クラスです:

public class CustomValidationRule : ValidationRule
{
    public int kMax
    {
        get { return kMax; }
        set { kMax = value; }
    }

    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        if (string.IsNullOrEmpty(value.ToString()))
            return new ValidationResult(false, "No number was entered!");
        if (value.ToString().Contains(' '))
            return new ValidationResult(false, string.Format("No spaces allowed!" );
        try
        {
            int num = Convert.ToInt32(value);
            if (num == 0 || num > kMax)
                return new ValidationResult(false, string.Format("Number must be in range of (0,{0})", kMax));
        }
        catch (FormatException fe)
        {
            return new ValidationResult(false, fe.Message);
        }

        return ValidationResult.ValidResult;
    }
}

これは私のウィンドウコードです:

public partial class kInputWindow : Window
{
    public string ResultText { get; set; }
    public int kMax { get; set; }

    public kInputWindow(string question,int kMax)
    {
        InitializeComponent();
        lblQuestion.Content = question;
        this.DataContext = this;
        this.kMax = kMax;
    }

    private void btnDialogOk_Click(object sender, RoutedEventArgs e)
    {
        this.DialogResult = true;
    }

    public string Answer
    {
        get { return txtAnswer.Text; }
    }

    private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("[^0-9]+");
        e.Handled = regex.IsMatch(e.Text);
    }
}

メイン ウィンドウでダイアログを作成するときは、次のようにします。

kInputWindow kInput = new kInputWindow(question, lines);
kInput.ShowDialog();

kinput は必要な値を取得しましたが、それを ValidationRule クラスに渡す方法がわかりません

4

1 に答える 1