2012-05-16 10 views
5

मैं बस लगभग 2 घंटे के लिए googled और कुछ भी नहीं मिला।विंडोज 8 मेट्रो: कार्यान्वयन प्रमाणीकरण

इस परिदृश्य को देखते हुए:

public class Person 
{ 
    [Required] 
    public string Name { get; set; } 
} 

XAML:

<TextBox Text="{Binding Name, Mode=TwoWay}" /> 

तुम कैसे जाने के बारे में स्वचालित रूप से सत्यापन की प्रतिक्रिया यूआई पर वहाँ MVC3 में है की तरह मिलेगा?

(ओह, और मैं वास्तव में इस समय कोई परवाह नहीं है अगर मैं की तरह एकीकृत DataAnnotations [आवश्यक] या नहीं का उपयोग करने में सक्षम हो जाएगा)

किसी भी मदद की बहुत सराहना कर रहा है!

उत्तर

13

मैंने WinRT XAML Toolkit में कुछ जोड़ा। यह TextBoxValidationExtensions कहा जाता है और आप इस तरह मान्यता को परिभाषित करने की अनुमति देता है है:

[Flags] 
public enum ValidTextBoxFormats 
{ 
    Any = 0, 
    NonEmpty = 1, 
    Numeric = 2, 
    NonEmptyNumeric = 3 
} 

पूरे कोड थोड़ा भी यहाँ साझा करने के लिए लंबा है:

<TextBox 
    Width="400" 
    HorizontalAlignment="Left" 
    xyzc:TextBoxValidationExtensions.Format="NonEmptyNumeric" 
    xyzc:TextBoxValidationExtensions.InvalidBrush="Red" 
    xyzc:TextBoxValidationExtensions.ValidBrush="Green" /> 

प्रारूपों वर्तमान के रूप में परिभाषित कर रहे हैं। आप CodePlex से कोड बाहर ले जा सकते हैं और अपने पसंद के हिसाब से संशोधित - नए सत्यापन नियमों जोड़ते समय डिफ़ॉल्ट ब्रश आदि

+0

ऐसा लगता है कि यह चाल है! वैसे भी, क्या आप मुझे समझा सकते हैं कि मैं इसे XAML के बजाय कोड में कैसे सेट कर पाऊंगा? – Shion

+0

यदि आप एमवीवीएम का उपयोग कर रहे हैं तो आपके पास टेक्स्ट और फॉर्मेट गुणों के साथ फ़ील्ड के लिए कुछ प्रकार का व्यू मॉडल होगा, तो आप बस बाध्यकारी जैसे xyzc: TextBoxValidationExtensions.Format = "{बाइंडिंग प्रारूप}" सेट करेंगे। यदि आप बस पीछे कोड करते हैं तो आप TextBoxValidationExtensions.SetFormat (myTextBox, ValidTextBoxFormats.Numeric) को कॉल करेंगे। –

+0

जैरी निक्सन ने अपने ब्लॉग [यहां - लेट्स कोड पर एक अन्य समाधान का वर्णन किया था! अपने विंडोज स्टोर ऐप में सत्यापन को संभालना] (http://blog.jerrynixon.com/2014/07/lets-code-handling-validation-in-your.html)। –

0

बस, विशेष रूप से XAML नियंत्रण में होने वाली घटनाओं का उपयोग करता है, तो जैसे textbox उपयोग pointerexited में और कोड में एक समारोह के बारे में संशोधित आवश्यक सत्यापन करने के लिए पीछे।

+0

हालांकि प्रश्न का उत्तर पहले से ही दिया गया था: आपके सुझाव से कोड को बनाए रखने के लिए बहुत अधिक डुप्लीकेट और मुश्किल हो जाएगी। फिलिप स्काकुन ने (स्वीकार्य उत्तर में!) पहले से ही पूरी तरह उत्तर दिया है। :) – Shion

-1

ऐसा लगता है कि ढांचे में दिए गए समर्थन के आधार पर, आपके असाधारण विचार को टेक्स्ट फ़ील्ड को "मान्य" करना बहुत दुर्लभ और असामान्य है कि इसे बिल्कुल विचार नहीं किया जाना चाहिए। हम सभी जानते हैं कि यदि आप जो करना चाहते थे वह सभी सामान्य या उपयोगी था, तो इस तरह के एक अच्छी तरह से डिजाइन और व्यापक ढांचे में ऐसी सुविधा के लिए कुछ विचार किया जाएगा।

+0

चलिए कहें, एक यूआरएल, संख्या, बेसिक ईमेल, या कुछ और, एक टेक्स्टबॉक्स को सत्यापित करने की आवश्यकता क्यों नहीं होगी? बेशक आप एक बटन के क्लिक पर मान्य कर सकते हैं और आवश्यक शैली को टेक्स्टबॉक्स में जोड़ सकते हैं, लेकिन कभी-कभी इसकी आवश्यकता नहीं होती है। और यह भी: क्योंकि यह ढांचे में नहीं है इसका मतलब यह नहीं है कि यह वांछित/आवश्यक नहीं है। – Shion

+0

@Shion एक शब्दकोश ढूंढें और 'sarcasm' शब्द को देखें – HappyNomad

+0

ऐसे लोग हैं जो गंभीर रूप से उत्तर की तरह सामान का मतलब है ... – Shion