2010-08-02 8 views
5

त्वरित सत्यापन से सत्यापन नियमों के मूल्यों को पास करना। मेरे पास WPF में कॉन्फ़िगरेटर कॉन्फ़िगर किया गया है जो यह सुनिश्चित करने के लिए जांच करता है कि कोई मान किसी विशिष्ट सीमा के भीतर है। यह बहुत अच्छा काम करता है। नीचे कोड देखें:डब्ल्यूपीएफ: बाध्य डेटा

<TextBox Name="valueTxt" Style="{StaticResource SquareBox}" GotKeyboardFocus="amountTxt_GotKeyboardFocus" GotMouseCapture="amountTxt_GotMouseCapture" LostFocus="boxLostFocus" Height="25" Width="50"> 
          <TextBox.Text> 
           <Binding Path="UnitCost" NotifyOnValidationError="True"> 
            <Binding.ValidationRules> 
             <local:ValidDecimal MaxAmount="1000"></local:ValidDecimal> 
            </Binding.ValidationRules> 
            <Binding.Converter> 
             <local:CurrencyConverter addPound="False" /> 
            </Binding.Converter> 
           </Binding> 
          </TextBox.Text> 
         </TextBox> 

हालांकि, मैं वैध डेटा को डेटा से दूसरे डेटा को पास करना चाहता हूं।

<local:ValidDecimal MaxAmount="1000" SKU="{Binding Path=tblProducts.ProductSKU}"></local:ValidDecimal> 

हालांकि, है प्रतीत होता है कि मैं इस तरह से SKU मूल्य का उपयोग नहीं कर सकते हैं: मुझे लगता है कि मैं सिर्फ इतना तरह सत्यापनकर्ता के delcaration को यह जोड़ सकता है ग्रहण किया।

कोई सुझाव?

धन्यवाद,

संपादित अच्छी तरह से उनका कहना है लायक हो सकता है कि में SKU बस एक स्ट्रिंग मेरी सत्यापनकर्ता में घोषित है, जैसे इतना:

public class ValidDecimal : ValidationRule 
{ 
    public int MaxAmount { get; set; } 
    public string SKU { get; set; } 

    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     //validate the value as a decimal in to two decimal places 
     string cost = (string)value; 
     try 
     { 

      decimal decCost = decimal.Parse(cost); 
      if (SKU != "85555") 
      { 
       if (decCost <= 0 || decCost > MaxAmount) 
       { 
        return new ValidationResult(false, "Amount is not within valid range"); 
       } 
      } 
      return new ValidationResult(true, null); 

     } 
     catch (Exception ex) 
     { 
      return new ValidationResult(false, "Not a valid decimal value"); 
     } 
    } 
} 

उत्तर

4

आप निर्भरता संपत्ति का उपयोग करने के लिए है, दृश्य स्टूडियो पहले से ही बताया आप कि।

पढ़ें: http://dedjo.blogspot.com/2007/05/fully-binded-validation-by-using.html

+6

लिंक की मदद की है, लेकिन दृश्य स्टूडियो मुझे कुछ भी नहीं बताया। यह किसी प्रकार की संवेदनशील एआई नहीं है जिसे मैं पूछ सकता हूं। यह सुनिश्चित नहीं है कि – Sergio

+0

द्वारा आपका क्या मतलब है, मैं इस बात से सहमत हूं, लेकिन मुझे अधिक से अधिक है। – zinking

+0

यहां एक और तरीका है: http://stackoverflow.com/questions/7456334/wpf-binding-property-in- validationrule –

संबंधित मुद्दे