2011-01-05 11 views
5

में डाटाबेस नलटेबल मान अपडेट नहीं किए गए हैं मेरे एमवीवीएम प्रोजेक्ट में मेरे पास दो टेक्स्टबॉक्स हैं जिनमें से एक मेरे ऑब्जेक्ट के एक निरर्थक पूर्णांक फ़ील्ड और दूसरे स्ट्रिंग फ़ील्ड से जुड़ा हुआ है। जब दृश्य लोड होता है तो यदि मैं स्ट्रिंग प्रॉपर्टी से जुड़े टेक्स्टबॉक्स में कोई मान डालता हूं तो मैं देख सकता हूं कि इसका मान ऑब्जेक्ट की स्ट्रिंग प्रॉपर्टी में अपडेट हो जाता है।सिल्वरलाइट XAML

हालांकि समस्या तब उत्पन्न होती है जब मैंने टेक्स्ट ऑब्जेक्ट में कोई मान दर्ज किया है जो मेरे ऑब्जेक्ट के शून्य पूर्णांक फ़ील्ड से जुड़ा हुआ है। यदि यह एक उचित पूर्णांक मान है तो मान अपडेट हो जाता है। अगर मैं टेक्स्ट ऑब्जेक्ट में एक अल्फान्यूमेरिक स्ट्रिंग डालता हूं जो मेरे ऑब्जेक्ट के नलबल इंटीजर फ़ील्ड से जुड़ा हुआ है या यदि मैं इसे खाली छोड़ देता हूं तो मेरे ऑब्जेक्ट का नलबल इंटीजर फ़ील्ड अपडेट नहीं होता है। यह अभी भी जो कुछ भी पहले सेट किया गया था उसे बरकरार रखता है।

उदाहरण के लिए। अगर मैंने संख्यात्मक टेक्स्टबॉक्स में '7' दर्ज किया है तो इसे 7 तक अपडेट किया जाएगा। अब अगर मैं इसे '7' से '7 ए' या 'ए 7' या 'asd' कहने के लिए बदलता हूं या इसे खाली छोड़ देता हूं। मान अभी भी 7 के रूप में रहता है जो पहले का मूल्य था।

कोई काम नलिका प्रकार बदलने के अलावा इस समस्या के आसपास है?

आपके समय के लिए धन्यवाद ...

उत्तर

1

समस्या यहाँ है जब भी आप empty string या alphabet values अपने TextBox में है कि Nullable<Int32> के लिए बाध्य है दर्ज करें, नल पूर्णांक का मान सेट नहीं है।

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

यह हल करने के लिए आप क्या कर सकते हैं एक कनवर्टर बना है। यह कनवर्टर एक स्ट्रिंग वैल्यू को int में बदलने की कोशिश करता है और ऐसा करने में विफल होने पर, शून्य लौटाता है जो शून्य int के मूल्य पर सेट किया जाएगा।

+0

धन्यवाद। मैं पहले ही कनवर्टर जोड़ चुका हूं। लेकिन कनवर्टर के साथ समस्या यह है कि यह एक शून्य को वापस कर देगा जिससे टेक्स्टबॉक्स को साफ़ किया जा सके। मैं उपयोगकर्ता को यह देखना चाहता हूं कि उन्होंने गलत मान दर्ज किया है। टेक्स्टबॉक्स को साफ़ करने से उन्हें लाभ नहीं मिलेगा ... और उन्हें पूरे नंबर को फिर से टाइप करना होगा (जैसे कि उन 16+ अंकों में जिन्हें आप कभी-कभी फॉर्म पर दर्ज करते हैं) – user20358

6

आप अपने पाठ बॉक्स को नकाबपोश था अंकीय मान स्वीकार तुम भी उपयोग कर सकते हैं:

पाठ = {बाइंडिंग PropertyName, मोड = TwoWay, TargetNullValue = ''}

यह सही ढंग से बाध्य पूर्णांक सेट हो जाएगा ? एक खाली स्ट्रिंग का पता चला है जब संपत्ति शून्य करने के लिए।