gridviewcolumn - WPF GridViewColumnHeader disable the dragging of columns between unmovable columns -


मेरे पास ListView जिसका दृश्य है ग्रिडव्यू अर्थात्: <पूर्व> & lt; ListView & gt; & LT; ListView.View & gt; & Lt; GridView / & gt; & LT; /ListView.View> & Lt; / ListView & gt;

इस उदाहरण के साथ:

खींचने से पहले

लाल पाठ वाले दो कॉलम में एक शैली लागू होता है जहां IsHitTestVisible संपत्ति को गलत पर सेट किया जाता है - जो उपयोगकर्ता को उन दो कॉलमों को स्थानांतरित करने से रोकता है।

यह संभव है, और यह होना चाहिए, उपयोगकर्ता के लिए अन्य तीन कॉलम अपने आप में खींचें।

दुर्भाग्य से, इस परिदृश्य के साथ, उपयोगकर्ता पहले या दूसरे अनजान स्तंभों में से तीन चलने वाले स्तंभों में से एक को से पहले स्थानांतरित कर सकता है, इस प्रकार एक स्तंभ चल रहा है जो चलने योग्य नहीं होना चाहिए, जैसे कि:

 खींचने के बाद

मेरा उद्देश्य अघोषित स्तंभों को रखना है जहां वे चल कॉलम को बीच में स्थानांतरित करने की अनुमति दे रहे हैं खुद को।

अघोषित कॉलम की मात्रा चर है, यह संभव है कि ग्रिडव्यू के पास कोई निश्चित कॉलम नहीं है, यह भी संभव है या तो, यहां दिखाया गया है - या अधिक (बड़ी तालिकाओं के लिए)।

इसलिए प्रश्न होगा, मैं एक कॉलम से पहले कॉल करने वाले उपयोगकर्ता को किस तरह से बाधित कर सकता हूं, जो खुद को स्थानांतरित नहीं किया जा सकता ?

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

@Rida :

मैंने अपनी समस्या को DependencyProperty नामक फिक्स्ड कॉलम के साथ हल करने का निर्णय लिया और जो एक पूर्णांक था।

  पब्लिक क्लास कॉलम एक्स्टेंशन: निर्भरता ऑब्जेक्ट {पब्लिक स्टेटिक रीडोनली डिपेंडेंसी प्रॉपर्टी फिक्स्ड कॉलम प्रॉपर्टी डिपेंडेंसी प्रॉपर्टी। पंजीयक संलग्न ("फिक्स्ड कॉलम", टाइपफ (इंट), टाइपफ (कॉलम एक्स्टेंशन), ​​न्यू प्रॉपर्टी मैटडेटा (0)); सार्वजनिक स्थिर ग GetFixedColumns (निर्भरता ऑब्जेक्ट obj) {वापसी (int) obj.GetValue (FixedColumnsProperty); } सार्वजनिक स्थिर शून्य SetFixedColumns (निर्भरता ऑब्जेक्ट obj, int मान) {obj.SetValue (FixedColumnsProperty, मान); }}   

मैं कॉलम का वर्णन करने वाले टेक्स्ट फ़ाइल को पार्स करता हूं, अगर मुझे एक कॉलम मिलता है जिसकी स्थिति तय हो रही है, तो मैं निश्चित कॉलम की संख्या में वृद्धि करता हूं: <पूर्व> foreach (पार्सेड कॉलम में वर्ड पर्सेड कॉलम) {var fCols = this.TestLV.GetValue (कॉलम एक्स्टेंशन। फिक्स्ड कॉलमप्रॉपर्टी); // निर्धारित कॉलमों की संख्या बढ़ाएं (पार्स्ड कॉलम। कॉलम रीसाइज़ == स्तंभ रीसाइज़ करें। आईआईएसएफिक्स) यह। टीटीएलवी .सेट वैल्यू (कॉलम एक्स्टेंशन। फिक्सड कॉलम प्रॉपर्टी, (इंट) एफकॉल्स + 1); एक बार पार्सिंग समाप्त हो जाने पर, मैं संग्रह चंगाई EventHandler की सदस्यता लेता हूं और यह कोड मूल रूप से है जैसा कि @ रीडा प्रस्तावित किया गया था लेकिन जांच के बजाय 0 के लिए, मैं यह देखने के लिए जांचता हूँ कि क्या नया स्टार्टिंग इंडेक्स निश्चित कॉलमों की संख्या से छोटा है।

यदि यह मामला है, तो मैं बस रद्द कर देता हूं कदम।

नतीजा यह है कि अब मुझे दो निश्चित स्तंभों के साथ यह तारामंडल हो सकता है:

 मूल स्थिति

जहां मेरे लिए पिछले तीन स्तंभों को खुद के बीच खींचना संभव है, लेकिन एक निश्चित कॉलम से पहले नहीं।

खींचने के बाद

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

मुझे आशा है कि यह किसी को रास्ते में मदद करता है, क्योंकि @ रीडा से कोड ने मेरी मदद की।

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -