2010-08-04 15 views
18

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

नीचे

मैं कैसे लगता है कि यह काम करना चाहिए के एक प्रोटोटाइप है लेकिन जब से यह नहीं है कि मैं कुछ के बारे में उलझन में हूँ :)

विधानसभा # 1
विंडो

<TextBlock 
    Text="{Binding RelativeSource={RelativeSource 
     AncestorType={x:Type client:Client}}, Path=Name }"/> 

विधानसभा # 2
आवेदन शैल

class Shell 
{ 
    public Client Client { get { return client; } set { client = value; } } 
    OnStartup() 
    { 
      NavigationWindow window = new NavigationWindow(); 
      window.DataContext = this; 
      window.Navigate(GetHomeView()); 
    } 
} 

उत्तर

45

निम्नलिखित काम करना चाहिए:

<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                 AncestorType={x:Type Window}}, 
                 Path=DataContext.Client.Name}" /> 
+0

बहुत बढ़िया है कि चाल किया! – Tedford