2009-03-10 16 views
8

मेरे पास आइटमों का एक ग्रिड है जो डाटाबेसिंग का उपयोग करके पॉप्युलेट किया जाता है। ग्रिड में मेरे पास कुछ कक्षों के लिए DataTemplate है। मुझे रूट तत्व (0 जो ग्रिड होस्ट कर रहा है) के DataContext तक पहुंचने की आवश्यकता है ताकि मैं अपने डेटामैप्लेट का समर्थन करने के लिए अतिरिक्त बाइंडिंग तक पहुंच सकूं।मैं WPF में डेटा टेम्पलेट में रूट डेटा कॉन्टेक्स्ट को कैसे एक्सेस कर सकता हूं?

तो तुम हो:

Window 
    Window.DataContext = TheDataSourceWithItemsAndSupports 
    DataGrid.ItemsSource = {Binding Items} 
     DataTemplate 
      ListBox.ItemsSource = {Binding Supports} 

मैं TheDataSourceWithItemsAndSupports पर {Binding Supports} चाहते हैं, लेकिन मैं ऐसा करने के लिए कैसे नहीं दिख रहा। मैंने {Binding} निर्दिष्ट करने का प्रयास किया लेकिन यह हमेशा null देता है। मैंने RelativeSource FindAncestor का उपयोग करने का भी प्रयास किया, लेकिन यह null भी पैदा करता है।

कोई सुराग?

उत्तर

14

शायद कोशिश

Window Name="TheWindow" 
... 
ListBox.ItemsSource = {Binding DataContext.Supports, ElementName=TheWindow} 
+0

मुझे लगता है कि बाध्यकारी पथ DataContext होगा। समर्थन, लेकिन यह मेरा विचार भी था। –

+0

आप सही हैं, संशोधित हैं। – user76035

+0

यह काम किया, लेकिन मुझे कुछ और कोडिंग करना पड़ा (ऊपर दिया गया परिदृश्य हाथ की स्थिति का सटीक प्रतिनिधित्व नहीं था)। – Inferis

0

यह जिस तरह से आप का वर्णन काम करना चाहिए। केवल एक चीज जो मैं आपके डेटा टेम्पलेट को देखता हूं वह आइटम टेम्पलेट नहीं है। बाइंडिंग असफल होने के लिए आपको आउटपुट विंडो को भी देखना चाहिए।

0

मेरे समाधान

get 
{ 
    return this; 
} 

को लागू इस क्षेत्र है और फिर इसे से जुड़ कर पूरे DataContext वर्ग का पर्दाफाश किया गया था।

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