2009-07-19 14 views
5

में नियंत्रण के लिए कैरेट को कैसे देख सकता हूं, एक नया WPF नियंत्रण बनाने और इसे कैरेट देने की आवश्यकता है। WINFORMS या previos Windows UI में WIN API कैरेट फ़ंक्शंस का उपयोग करना आसान था, लेकिन अब WPF में हमारे पास प्रत्येक नियंत्रण के लिए hwnd नहीं है ... क्या ऐसा करने का कोई तरीका है?मैं WPF

उत्तर

3

WPF में, कैरट वास्तव में CaretElement, एक आंतरिक चयन ब्लॉक और कैरट प्रतिपादन के लिए इस्तेमाल किया FrameworkElement है।

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

संपादित

CaretElement ढांचे के लिए आंतरिक है और हाँ, दर्ज नहीं किया।

यह here उल्लेख किया गया है, उदाहरण के लिए।

एक बंद स्रोत कस्टम कार्यान्वयन एक commercial पैकेज में मौजूद है।

+0

कि CaretElement दस्तावेज नहीं है, यहां तक ​​कि सुलभ भी नहीं है? – jmayor

+0

पूर्णता के लिए संपादित उत्तर। –

+1

मैं बाहर समझा WPF http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox –

1

WPF में कैरट एक बस एक और एनीमेशन, उस के लिए कोई विशेष एपीआई है। एक रेखा बनाएं, और डबलएनीमेशन के साथ अपनी अस्पष्टता बदलें।

आप WPF पाठ बॉक्स में निकट से देखने पर है, तो कैरट भी 'पिक्सेल उलट' ऐसा नहीं करता है, यह सिर्फ ग्रे पत्र के ऊपर खींची गई रेखा है।

संभावित आप एक पिक्सेल शेडर प्रभाव को लागू करने से WPF में पिक्सेल उलट कर सकते हैं। शायद इसके लायक नहीं है। वीएस -2010 बीटा टेक्स्ट कैरेट के लिए उलटा नहीं करता है।

अलावा पाठ बॉक्स से/RichTextBox वहाँ 3 अन्य संपादन घटकों आप पा सकते हैं कर रहे हैं:

  • अभिव्यक्ति ब्लेंड कोड संपादक
  • विजुअल स्टूडियो 2010 कोड संपादक
  • SharpDevelop 4 कोड संपादक
+0

में एक ठीक है, यह मुश्किल है बनाने के लिए एक लेख बनाया ... और फिर टेक्स्ट को टेक्स्ट इनपुट ईवेंट के साथ-साथ पूर्वावलोकन/कीडॉ/यूपी घटनाओं द्वारा संभाला जाना चाहिए। यह खरोंच से बनाने के लिए एक दुःस्वप्न है .... मदद के लिए धन्यवाद। आप सभी लोग – jmayor

+0

यह निश्चित रूप से एक अच्छी गुणवत्ता दुःस्वप्न है। –

+0

संबंधित: [? मैं सिस्टम .NET में अवधि कैरट कैसे मिलता है] (http://stackoverflow.com/questions/11986832/how-do-i-get-the-systems-caret-period-in-net) ... और जब तक वहाँ WPF में कैरट झपकी आवृत्ति या तो पी/आह्वान या संदर्भ WinForms का उपयोग करके के अलावा अन्य को पुनः प्राप्त करने के लिए कोई सीधा रास्ता है (खुद के लिए तय सकें कि आप कम बुराई पर विचार करें), WPF के 'SystemParameters' वर्ग एक प्रदान करता है [ 'CaretWidth'] (http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.caretwidth.aspx) क्षेत्र। –