2013-01-23 6 views
5

मैं नौसिखिया हूँ मेरी UserControl WPF.In करने के लिए, इस प्रकार मैं 8 लेबल और अपने संबंधित 8 बक्सें है:ValidationRule

1.Label : abc 2.Label : def 
    TextBox1 :  TextBox2 : 

3.Label :xyz 4. Label : ghi 
    Textbox3 :  TextBox4 : 

इन पाठ बॉक्स पाठ संपत्ति में से प्रत्येक अपने संबंधित लेबल के साथ समाप्त होने में पाठ होना चाहिए TextBox1.textxxxx.abc, TextBox2.text होना चाहिए xxxx.def और इसी तरह। अगर टेक्स्टबॉक्स में लाल सीमा नहीं होनी चाहिए।

उम्मीद है कि मैं विवरण के साथ स्पष्ट हूं। तो क्या मुझे प्रत्येक टेक्स्टबॉक्स के लिए अलग-अलग ValidationRule लिखने की आवश्यकता है ??

कोई भी आप इनपुट करते हैं ??

उत्तर

21

क्यों एक संपत्ति उजागर क्या क्षेत्र के साथ समाप्त होना चाहिए साथ, एक ValidationRule कार्यान्वयन नहीं, उदाहरण के लिए:

public class EndsWithValidationRule : ValidationRule 
{ 
    public string MustEndWith { get; set; } 

    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 
     var str = value as string; 
     if(str == null) 
     { 
      return new ValidationResult(false, "Please enter some text"); 
     } 
     if(!str.EndsWith(MustEndWith)) 
     { 
      return new ValidationResult(false, String.Format("Text must end with '{0}'", MustEndWith)); 
     } 
     return new ValidationResult(true, null); 

    } 
} 

तो फिर तुम यह इतना की तरह उपयोग कर सकते हैं:

<TextBox x:Name="TextBox1"> 
    <TextBox.Text> 
     <Binding Path="BoundProperty1" UpdateSourceTrigger="PropertyChanged"> 
      <Binding.ValidationRules> 
       <local:EndsWithValidationRule MustEndWith=".def" /> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 

<TextBox x:Name="TextBox2"> 
    <TextBox.Text> 
     <Binding Path="BoundProperty2" UpdateSourceTrigger="PropertyChanged"> 
      <Binding.ValidationRules> 
       <local:EndsWithValidationRule MustEndWith=".abc" /> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 
संबंधित मुद्दे