如何将xaml中的值绑定到validation规则?

我是.net开发的新手,所以请帮帮我。

我试图通过xaml数据绑定将c#类中的值传递给validation规则。

C#类:

public class NumericDoubleUpDownValueContainerVM : SimpleValueContainerVM { public NumericDoubleUpDownValueContainerVM(double value, double minValue, double maxValue, int decimalPlace) : base(value.ToString()) { this.MinimumValue = minValue; this.MaximumValue = maxValue; this.DecimalPlaces = decimalPlace; } public double MinimumValue { get; set; } public double MaximumValue { get; set; } public int DecimalPlaces { get; set; } public override void UpdatePropertyValue(object value, string propertyName = "") { this.Value = Convert.ToString(value); } } 

这里, SimpleValueContainerVM是一个generics类,用于从相应的UI元素中获取和设置值。

Xaml代码:

             

这里的ValueWithinLimits规则是我正在使用的:

validation规则如下:

  public class ValueWithinLimitsRule : ValidationRule { public double MaxVal { get; set; } public double MinVal { get; set; } public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if (value != null) { if (Convert.ToDouble(value.ToString()) > this.MaxVal || Convert.ToDouble(value.ToString()) < this.MinVal) { return new ValidationResult(false, null); } else { return new ValidationResult(true, null); } } return new ValidationResult(false, null); } } 

我尝试过类似的东西

  

这只是工作正常。

现在我想使用NumericDoubleUpDownValueContainerVM的属性

 MinimumValue and MaximumValue 

代替0和100。

我已经尝试使用谷歌搜索并了解依赖属性和对象,但无法掌握它。

我真的很感激任何帮助。

您可以创建一个派生类,该派生类派生自DependencyObject并公开依赖项属性。 然后将一个CLR属性添加到ValidationRule类,该类返回此包装类型的实例。

 public class AgeValidationRule : ValidationRule { public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { string text = value.ToString(); int age; int.TryParse(text, out age); if (age < 10 || age > this.Wrapper.MaxAge) return new ValidationResult(false, "Invalid age."); return ValidationResult.ValidResult; } public Wrapper Wrapper { get; set; } } public class Wrapper : DependencyObject { public static readonly DependencyProperty MaxAgeProperty = DependencyProperty.Register("MaxAge", typeof(int), typeof(Wrapper), new FrameworkPropertyMetadata(int.MaxValue)); public int MaxAge { get { return (int)GetValue(MaxAgeProperty); } set { SetValue(MaxAgeProperty, value); } } } 

XAML:

              

有关更多信息和完整示例,请参阅以下文章。

WPF:将数据绑定值传递给validation规则: https //social.technet.microsoft.com/wiki/contents/articles/31422.wpf-passing-a-data-bound-value-to-a-validation- rule.aspx