2011-02-07 13 views
8

ए 'बाध्यकारी' प्रकार 'बाइंडिंग' प्रकार की 'स्रोत' प्रॉपर्टी पर सेट नहीं किया जा सकता है। एक 'बाध्यकारी' केवल निर्भरता ऑब्जेक्ट की निर्भरता प्रॉपर्टी पर सेट किया जा सकता है।ए 'बाध्यकारी' प्रकार 'बाध्यकारी' प्रकार 'स्रोत' संपत्ति पर सेट नहीं किया जा सकता है

<TreeView Height="400" Width="400"> 
    <TreeViewItem ItemsSource="{Binding Source={Binding Path=Data}, XPath=*, 
Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root }" Header="header" /> 
    </TreeView> 
  • क्या ItemsSource = "{बाइंडिंग स्रोत = {बाइंडिंग पथ = डेटा} के साथ गलत क्या है?

    Data = "<root><parm1>1</parm1><parm2>2</parm2><parm3>3</parm3></root>" 
    

मैं this कोड नमूना उपयोग करने के लिए प्रयास करें। अलग है कि मैं आइटम्ससोर्स को डाटाकॉन्टेक्स्ट में डेटा से जोड़ना चाहता हूं। कनवर्टर के साथ कुछ भी गलत नहीं है।

संपादित करें: एक तत्व (स्ट्रिंग) के साथ

<TreeViewItem ItemsSource="{Binding Path=Data}" Header="Parameters" /> 

भरता TreeView। तो डेटाकॉन्टेक्स्ट सही है।

संपादित करें: यह कोड बेहतर काम करता है। क्या थ्री व्यू में एक्सएमएल पढ़ने का एक सामान्य तरीका है? मैं एक्सएमएल की संरचना नहीं जानता। सभी उदाहरणों में मैंने देखा है कि आपको उप नोड्स प्रकार घोषित करना होगा।

<TreeViewItem DataContext="{Binding Path=Data, Converter={StaticResource stringToXmlDataProviderConverter}}" ItemsSource="{Binding .}" Header="Parameters" /> 
+0

'डेटा' कैसा दिखता है? इसका डेटा प्रकार क्या है? इसकी संपत्ति क्या हैं? – Gabe

उत्तर

4

बाइंडिंग की संपत्ति स्रोत को बाध्य नहीं किया जा सकता क्योंकि यह निर्भरता संपत्ति नहीं है। क्या आप वाकई ऐसा नहीं करना चाहते हैं? :

{Binding Path=Data, XPath=*, Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root} 

संपादित करें:

1) आप सही तरीके से DataContext निर्धारित किया है: बाइंडिंग डिबगिंग जबकि

जांच-सूची की जाँच के लिए?

2) क्या संपत्ति एक्सएएमएल कोड के लिए दृश्यमान है?

3) क्या संपत्ति का उपयोग किया जाता है (इसके गेटटर में ब्रेकपॉइंट डालें)। क्या यह मान वापस लौटाता है?

4) क्या संपत्ति सही ढंग से अपडेट की गई है? निम्न परिदृश्यों में से किसी को लागू करना चाहिए:

  • संपत्ति DependecyProperty

  • है संपत्ति के बारे में INotofyPropertyChanged

  • के माध्यम से अपने परिवर्तन को सूचित करता है संपत्ति के मूल्य हमें InitializeComponent()

  • कॉल करने से पहले को अंतिम रूप दिया
+0

समाधान क्या है? –

+0

मैंने आंतरिक बाध्यकारी को हटा दिया। –

+0

जब मैं आपके कोड का उपयोग करता हूं तो मुझे कोई अपवाद नहीं मिलता है, लेकिन मुझे पेड़ में कोई डेटा नहीं मिलता है। stringToXmlDataProviderConverter या तो नहीं चलाता है। –

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