2009-07-10 9 views
14

डेटाग्रिड का स्रोत अपडेट होने पर कौन सी घटना आग लगती है? मैंने DataContextChanged और SourceUpdated की कोशिश की है लेकिन यह कभी काम नहीं किया।डब्ल्यूपीएफ डाटाग्रिड कैसे प्राप्त करें जब आइटम्ससोर्स अपडेट

दरअसल मुझे एक साधारण चीज़ चाहिए। मैं चाहता हूं कि, यदि कोई नई पंक्ति आती है, तो यह देखने के लिए कि ग्रिड व्यू की स्क्रॉलबार नीचे नीचे स्क्रॉल करें, यह देखने के लिए कि यह क्या था।

+0

है जब आप कहते हैं कि "जब एक नई पंक्तियों में आता है" आप के लिए क्या मतलब है अंतर्निहित डेटासोर्स (डेटाबेस) या डेटाग्रिड डेटासोर्स में? –

+0

मेरा मतलब था कि ग्रिड व्यू के आइटमसोर्स। – Agzam

उत्तर

27

मैं एक ही समस्या थी और मैं इसे इस तरह से

DataGrid myGrid = new DataGrid(); 
CollectionView myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(myGrid.Items); 
((INotifyCollectionChanged)myCollectionView).CollectionChanged += new NotifyCollectionChangedEventHandler(DataGrid_CollectionChanged); 

फिर आप ईवेंट हैंडलर DataGrid_CollectionChanged में तर्क लागू करने की आवश्यकता का प्रबंधन।

3

यदि आप डेटाबेस में कुछ जोड़ा जाने पर ग्रिड रीफ्रेश करने का प्रयास कर रहे हैं, तो ऐसा नहीं होने वाला है। मैं WPF की तुलना में WinForms से अधिक परिचित हूं लेकिन मुझे लगता है कि कुछ पृष्ठभूमि प्रक्रिया लिखने के बिना डेटाबेस के साथ सिंक में ग्रिड रखने के लिए कोई जादुई तरीका नहीं है जो लगातार डेटाबेस परिवर्तनों की जांच करता है।

यदि आप ग्रिड (पूर्व संग्रह) का वास्तविक डेटा स्रोत अपडेट कर रहे हैं तो वह ग्रिड अपडेट करेगा।

+0

हां मेरे पास कुछ संग्रह है, और यह आइटमसोर्स के माध्यम से ग्रिड व्यू के साथ बाध्य है। – Agzam

+0

दरअसल, WinForms पर WPF के फायदों में से एक डेटासेट में ग्रिड बांधने की क्षमता है और यूआई अपडेट स्वचालित रूप से है –

7

आइटम्ससोर्स बाध्यकारी और लक्ष्य अद्यतन दिनांक को संभालने के लिए NotifyOnTargetUpdated = सत्य सेट करें। यदि आपके पास एकाधिक बाइंडिंग हैं, तो यह पता लगाने के लिए कि क्या आइटम्स स्रोत है या नहीं, डेटाट्रांस्फरएन्टएआरजी प्रॉपर्टी देखें।

2

अपनी भूमिका मैं SelectionChange अधिसूचना का उपयोग किया है के लिए जो प्रत्येक घटना डेल उठाना/जोड़ें/संपादित करें/चयन यह काम बहुत अच्छी तरह से

private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Console.WriteLine("hi"); 
} 
संबंधित मुद्दे