2010-02-22 10 views
5

wpf डेटाग्रिड में शीर्ष पर रिक्त पंक्ति कैसे प्राप्त करें? यानी जब उपयोगकर्ता नई पंक्ति जोड़ना चाहता है, तो यह हमेशा नीचे आता है। लेकिन मैं इसे शीर्ष पर रखना चाहता हूं ... क्या मैं इसे एक्सएएमएल में कर सकता हूं?wpf डेटाग्रिड में शीर्ष पर रिक्त पंक्ति कैसे प्राप्त करें?

उत्तर

0

यह उत्तर इस बात पर निर्भर करता है कि आप अपने डेटाग्रिड को बाध्यकारी कैसे कर रहे हैं, विशेष रूप से आपके आइटम्स स्रोत का अंतर्निहित प्रकार क्या है। यह जवाब मानता है कि आप ObservableCollection का उपयोग कर रहे हैं। चूंकि आप विशेष रूप से डब्ल्यूपीएफ का जिक्र करते हैं, इसलिए मुझे लगता है कि आपका मतलब .NET 4.0 है, क्योंकि डेटाग्रिड केवल सिल्वरलाइट 3 और .NET 4.0 में उपलब्ध है।

मुझे लगता है कि आप एक पंक्ति Newing हैं

ItemSource.Add(new MyObject()); 

बुला व्यवहार आप की इच्छा प्राप्त करने के लिए से, बजाय निम्नलिखित का उपयोग करें:

ItemSource.Insert(0, new MyObject()); 
+0

ओह अच्छा .. एक ही रास्ता .. लेकिन यह जोड़ पंक्ति प्रभाव को अनुकरण कर रहा है ... आपको ईवेंट हैंडलर लिखना है और सब कुछ प्रबंधित करना है ... मैं यह कर सकता हूं और टिप के लिए धन्यवाद। मैं .NET 3.5 डेटाग्रिड का उपयोग कर रहा हूं .. मुझे लगता है कि यह बीटा है और मैं इसे बिल्कुल सही तरीके से कर रहा हूं .... कोई अन्य विचार? – kedar

+1

डेटाग्रिड .NET 3.5 के लिए उपलब्ध है यदि आप WPF टूलकिट स्थापित करते हैं, जो कोडप्लेक्स पर उपलब्ध है। – Dave

0

आप के लिए अपने स्वयं के टेम्पलेट लिखने के लिए होता है डेटाग्रिड जहां आप ग्रिड के शीर्ष पर न्यूइटम प्लेसहोल्डर भाग डाल देंगे। इसके साथ शुरू करने के लिए example देखें (हालांकि उदाहरण उत्तर नहीं है यह आपको सही दिशा में इंगित करेगा)।

साइड नोट पर मैं पूछ सकता हूं कि आपको शीर्ष पर न्यूइटम प्लेसहोल्डर क्यों रखना होगा? यह प्राकृतिक शीर्ष से नीचे प्रवाह तक टूट जाता है, इसलिए सूचियों/ग्रिड से निपटने के दौरान हमें देखने के लिए उपयोग किया जाता है।
यह नीचे की ओर नई वस्तु चीज़ और ग्रिड या इन पंक्तियों के साथ कुछ के लिए संदर्भ मेनू में आइटम विकल्प डालने के लिए और अधिक सहज हो सकता है। यह केवल मेरी राय है।

1

आप एक MMVM दृष्टिकोण का उपयोग कर रहे हैं, तो आप एक नई पंक्ति जोड़ सकते हैं प्रोग्राम के पसंद:

 var newEmp = new EmployeeViewModel(new EmployeeDto()); 
     EmployeeList.Add(newEmp); 
     EmployeeList.Move(EmployeeList.IndexOf(newEmp), 0); 

मेरे उदाहरण में मैं EmployeeViewModels के एक ObservableCollection प्रदर्शित करने के लिए एक EmployeeListViewModel उपयोग कर रहा हूँ।

फिर आप इस व्यवहार के लिए परीक्षण लिखने में भी सक्षम हैं। XAML में अधिक से अधिक नियंत्रण ....

/जोहान

+0

+1 साफ समाधान –

8
NewItemPlaceholderPosition.AtBeginning के बारे में

क्या? मेरे पास कोड उदाहरण नहीं है लेकिन ऐसा लगता है कि आप जो वर्णन कर रहे हैं। जोहान जो भी सुझाव दे रहा है वह हमेशा कर सकता है और आइटम को ग्रिड में क्रमबद्ध रूप से स्थानांतरित या सॉर्ट कर सकता है।

कोड उदाहरण रे बर्न्स द्वारा कहा:

var view = CollectionView.GetDefaultCollectionView(EmployeeList) 
      as IEditableCollectionView; 
if(view!=null) 
    view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning; 

ध्यान दें कि यह आवश्यकता है नेट फ्रेमवर्क 3.5 या इसके बाद के संस्करण।

+0

उत्कृष्ट उत्तर woodyiii (+1)। मैंने आपके कोड को और भी बेहतर बनाने के लिए नेट फ्रेमवर्क संस्करण के बारे में कुछ कोड और एक नोट जोड़ा। –

+1

.GetDefaultCollectionView संग्रह दृश्य वर्ग (4.0) पर एक विधि नहीं है। क्या संग्रहViewSource.GetDefaultView (ऑब्जेक्ट) एक ही चीज़ है? – Michael

+0

@ रेबर्न कृपया .NET Framework के संबंध में कोड अपडेट करें। कोड v4 और ऊपर के लिए काम नहीं करता है .. –

संबंधित मुद्दे