2011-06-28 4 views
1

私たちは以下のように、このValiationRuleクラスを使用し、ValidationRulesに最小値と最大値のプロパティを設定するXAMLで実行時にValidationRuleクラスのプロパティ値をWPFで渡す方法はありますか?

public class DiscountPerRule : ValidationRule 
{ 
    public float Min { get; set; } 

    public float Max { get; set; } 

    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     float _prm = 0f; 
     try 
     { 
      if (value.ToString().Length > 0) 
      { 
       _prm = float.Parse(value.ToString()); 
      } 
     } 
     catch 
     { 
      return new ValidationResult(false, "Illegal Characters, Please Enter Numaric Value"); 
     } 
     if ((_prm < Min) || (_prm > Max)) 
     { 
      return new ValidationResult(false, String.Format("Please enter value in the Range: {0} - {1}.", this.Min, this.Max)); 
     } 
     return new ValidationResult(true, null); 
    } 
} 

(下記のように)私は、割引率の検証のためのValidationRuleクラスを持っているタグ

<TextBox x:Name="txtDisPer" Width="108" HorizontalAlignment="Center" VerticalAlignment="Center" Validation.Error="txtDisPer_Error" > 
    <Binding Path="Rate" UpdateSourceTrigger="PropertyChanged" ValidatesOnExceptions="True" ValidatesOnDataErrors="True" NotifyOnValidationError="True" Mode="TwoWay" NotifyOnSourceUpdated="True" NotifyOnTargetUpdated="True"> 
     <Binding.ValidationRules> 
      <local:DiscountPerRule Max="100" Min="0"/> 
     </Binding.ValidationRules> 
    </Binding> 
</TextBox> 

だから、どのようにC#コードで実行時に最小値と最大値を割り当てる(Programaticaly)

答えて

1

最も簡単な方法は、XAMLで検証ルールに名前を付けることです。

<local:DiscountPerRule x:Name="discountPerRule" Max="100" Min="0"/> 

し、それを変えるためにあなたのコードビハインドでこのようなコードを使用します。

discountPerRule.Min = 10; 
discountPerRule.Max = 50; 
+0

卿、私はあなたに感謝し、今uが私の質問を得ることを願って、私の質問に絞り込みました –

関連する問題