私はwpfで新しく、いくつかのshowdialogウィンドウの検証テキストボックスを作成しようとしています。私はすでに空欄と空白の検証をしていますが、ダイアログに渡した最大値より大きい数値に対してバリデーションを追加する必要がありますが、ValidationRuleクラスにその値を使用する方法はわかりません。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クラスに渡す方法を知らないです