WPF - How to stop an ItemsControl psuedo-grid's columns from dancing/jumping around during layout -


मेरे पास एक ही निष्कर्ष पर आए हैं - एक ItemsControl का उपयोग करके एक DataTemplate का उपयोग करने से बहुत अधिक सरल (विशेष रूप से प्रारूप) ग्रिड के समान आइटम के लिए निर्मित प्रत्येक आइटम के लिए P> <पूर्व> & lt; स्टैकपैनेल ग्रिड। आईएसएयरसइज्ड स्कोप = "ट्रू" & gt; & Lt;! - हैडर - & gt; & LT; ग्रिड & gt; & LT; Grid.ColumnDefinitions & gt; & Lt; कॉलम डिफाइनिशन चौड़ाई = "ऑटो" साझा किया गया समूह समूह = "स्तंभ 1" / & gt; & Lt; कॉलम डिफाइनिशन चौड़ाई = "ऑटो" साझा किया गया समूह समूह = "स्तंभ 2" / & gt; & LT; /Grid.ColumnDefinitions> & Lt; टेक्स्टब्लॉक ग्रिड। कॉलम = "0" टेक्स्ट = "कॉलम हैडर 1" / & gt; & Lt; टेक्स्टब्लॉक ग्रिड। कॉलम = "1" टेक्स्ट = "कॉलम हेडर 2" / & gt; & Lt; / ग्रिड & gt; & Lt;! - आइटम - & gt; & Lt; आइटमोंकंट्रोल आइटम्स सोर्स = "{बाध्यकारी पथ = मान, मोड = वनवेज़}" & gt; & LT; ItemsControl.ItemTemplate & gt; & LT; DataTemplate & gt; & LT; ग्रिड & gt; & LT; Grid.ColumnDefinitions & gt; & Lt; कॉलम डिफाइनिशन चौड़ाई = "ऑटो" साझा किया गया समूह समूह = "स्तंभ 1" / & gt; & Lt; कॉलमडिफ़िनिशन चौड़ाई = "ऑटो" शेडआइससमूह = "कॉलम 2" / & gt; & LT; /Grid.ColumnDefinitions> & Lt; टेक्स्टब्लॉक ग्रिड। कॉलम = "0" टेक्स्ट = "{बाध्यकारी कॉलम प्रॉपर्टी 1}" / & gt; & Lt; टेक्स्टब्लॉक ग्रिड। कॉलम = "1" टेक्स्ट = "{बाध्यकारी कॉलम प्रॉपर्टी 2}" / & gt; & Lt; / ग्रिड & gt; & Lt; / DataTemplate & gt; & LT; /ItemsControl.ItemTemplate> & Lt; / ItemsControl & gt; & Lt; / StackPanel & gt;

मैं देख रहा हूँ कि समस्या यह है कि जब भी मैं उस वस्तु को स्वैप करता हूँ जिसमें ItemsSource बाध्य है (यह एक ObsavableCollection है I कुछ सेकंड के लिए पूरे 'ग्रिड' नृत्य के संदर्भ में, संदर्भ को प्रतिस्थापित करते हैं, इसके बजाय, स्पष्ट और पुनः जोड़)।

संभवत: यह सभी Auto < / कोड> चौथा कॉलम मेल करने के लिए।

यह मेरे उपयोगकर्ताओं के लिए बहुत ध्यान भंग है और मैं इसे सुलझाऊंगा। क्या यह किसी और को देखा है?

ऐसा लगता है कि ग्रिड की सामग्री इस समस्या से पहले एक निश्चित स्तर की जटिलता होनी चाहिए दिखाई दे रहा है।

ओपी में दिखाए गए सरल टेक्स्टब्लॉक की समस्या शायद बहुत ही आसानी से प्रकट नहीं होती क्योंकि वे स्थिर आकार हैं। यदि आप किसी सेल में टेक्स्ट बॉक्स (नहीं TextBlock) फेंकते हैं, तो रन-टाइम पर, टेक्स्ट बॉक्स को ऑटो का विस्तार करने के लिए पर्याप्त पाठ दर्ज करें, आपको देखना चाहिए कि वह बेतहाशा चलना शुरू कर दे .. यह बहुत-बहुत-स्वीकार्य रेखा पर अच्छी तरह से है। मेरे आइटम नियंत्रण में 7 पंक्तियां थीं।

यह प्रभावी रूप से बहुत अधिक प्रचारित IsSharedSizeScope + ItemsControl दृष्टिकोण को पूरी तरह से जाने योग्य नहीं है, खासकर संपादन योग्य, पाठ बॉक्स उन्मुख ग्रिड सामग्री के लिए।

मेरी जरूरतों, सूचीव्यू या "आइटम नियंत्रण" + GridViewRowPresenter "दृष्टिकोण के रूप में प्रस्तुत किया गया है और यह एक बहुत ही सीधा विकल्प है और इन में से कोई भी लेआउट समस्या नहीं है।

उन लोगों से पूछते हैं," क्यों नहीं एक डाटाग्रीड? " डेटाग्रिड संपादन के लिए एक निश्चित दृष्टिकोण को लागू करता है मैं उन सभी के माध्यम से काम करने के लिए तैयार था, लेकिन एक गत अंत में घायल हो गया था कि डेटाग्रिड वैधीकरण कैसे मिलती है। त्रुटि समर्थन छोटे लाल सत्यापन त्रुटि बॉक्स सरल DataGridTextColumn के लिए ठीक काम करेंगे, लेकिन DataGridTemplateColumn के लिए (एक कॉलम में एक से अधिक टेक्स्ट बॉक्स प्रदान करने के लिए आवश्यक), यह शुरू में लाल बक्से दिखाएगा और उसके बाद असंगत रूप से उन्हें छिपाना होगा जहां आप पर क्लिक करें डेटा ग्रिड। बाद में मान्यकरण रिफ्रेश पर वे पूरी तरह से अदृश्य हो सकते हैं। (पुराना उदाहरण:, "मुझे सोने का टुकड़ा" के लिए नीचे खोजें "... ...)

मेरा संपूर्ण प्रोजेक्ट स्रोत ऑनलाइन है इस GridViewRowPresenter दृष्टिकोण यहां दर्शाया गया है:


Comments

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -