एमएसडीएन दस्तावेज ब्राउज़ करते समय, आप इस मणि में आ सकते हैं: TextBox.Watermark।सिल्वरलाइट 4 में TextBox.Watermark का उपयोग कैसे करें?
"बहुत बढ़िया! मैं अपने टेक्स्ट बॉक्स पर वॉटरमार्किंग करने का एक अंतर्निहित तरीका चाहता हूं! यह बढ़िया है, मुझे आगे बढ़ने दें और इसे एक्सएएमएल में सेट करें!"
<TextBox Watermark="This is my watermark" Margin="20"></TextBox>
दुर्भाग्यवश, अगर आप इस चलाते समय नहीं मिलेगा आप क्या उम्मीद:
और विस्तार:
यह क्या है? खैर, एमएसडीएन दस्तावेज को बारीकी से देखें:
यह सही है। यह सिल्वरलाइट 4 में समर्थित है, लेकिन यह भी कहता है "सिल्वरलाइट 4 एप्लिकेशन में उपयोग न करें"। यदि आप इसका उपयोग करते हैं, तो आपको सिस्टम.NotImplemented अपवाद प्राप्त होता है। सत्यापित करने के लिए, यहाँ संपत्ति परावर्तक के माध्यम से decompiled के लिए कोड है:
[EditorBrowsable(EditorBrowsableState.Never)]
public object Watermark
{
get
{
StubHelper.ThrowIfNotInDesignMode();
return base.GetValue(WatermarkProperty);
}
set
{
StubHelper.ThrowIfNotInDesignMode();
base.SetValue(WatermarkProperty, value);
}
}
इसमें है - यह एक अपवाद किसी भी समय यह डिज़ाइन मोड में नहीं है फेंकता है। इसका कोई मतलब नहीं है? माइक्रोसॉफ्ट ऐसा क्यों करेगा?
दुर्भाग्यवश मुझे अभी तक कोई निश्चित उत्तर नहीं मिला है, हालांकि अगर मुझे लगता है कि ऐसा इसलिए है क्योंकि माइक्रोसॉफ्ट भविष्य के संस्करण (शायद v5) में टेक्स्टबॉक्स नियंत्रण पर वॉटरमार्क व्यवहार को लागू करने की योजना बना रहा है और प्रभावी रूप से इस संपत्ति को आरक्षित करना चाहता था इसलिए तीसरे पक्ष के नियंत्रण निर्माता टेक्स्टबॉक्स को उपclass नहीं करते हैं और अपनी खुद की वॉटरमार्क संपत्ति बनाते हैं। मुझे कम से कम एक नियंत्रण विक्रेता, घटक का पता है, जिसका नियंत्रण टेक्स्टबॉक्स से प्राप्त होता है और वॉटरमार्क संपत्ति प्रदान करता है। मेरे लिए, ऐसा लगता है कि यह माइक्रोसॉफ्ट का इस संपत्ति नाम का उपयोग अपने टेक्स्टबॉक्स उप-वर्गों पर करने से लोगों को हतोत्साहित करने का तरीका है।
+1 चेक आउट । रास्ते में सिल्वरलाइट 5 में ठीक काम करता है। ध्यान दें कि एसएल 5 एमएसडीएन दस्तावेज में अभी भी वॉटरमार्क संपत्ति के बारे में एक ही विरोधाभासी जानकारी है। –
ध्यान दें कि वॉटरमार्क संपत्ति सेट नहीं होने पर मुख्य रूप से डिज़ाइन-टाइम त्रुटि को हल करने के लिए मैंने कोड को थोड़ा tweaked किया। अपडेट किया गया कोड नीचे दिए गए नए उत्तर के रूप में जोड़ा गया। –
आपने कन्स्ट्रक्टर में ईवेंट में पंजीकृत किया है, लेकिन अनलोड में आप उनसे अनियंत्रित हैं (जो ठीक है), लेकिन इससे टैब नियंत्रण में समस्याएं आती हैं, टैब नियंत्रण इसकी सामग्री को उतार देगा और उचित टैब दबाए जाने पर लोड होगा, इसलिए शायद आपको कन्स्ट्रक्टर के बजाय लोडेड इवेंट में ईवेंट में पंजीकरण करें। – Sonosar