WPF - How to stop an ItemsControl psuedo-grid's columns from dancing/jumping around during layout -
मेरे पास एक ही निष्कर्ष पर आए हैं - एक मैं देख रहा हूँ कि समस्या यह है कि जब भी मैं उस वस्तु को स्वैप करता हूँ जिसमें संभवत: यह सभी यह मेरे उपयोगकर्ताओं के लिए बहुत ध्यान भंग है और मैं इसे सुलझाऊंगा। क्या यह किसी और को देखा है? ItemsControl
का उपयोग करके एक DataTemplate
& 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
Post a Comment