2010-07-05 12 views
19

मेरे पास ItemsControl है जो आयताकारों का एक गुच्छा प्रदर्शित करता है। प्रत्येक आयताकार को ऊपर और बाईं ओर ऑफसेट करने की आवश्यकता होती है। इसलिए, मैंने RectangleStyle बनाया है जो चौड़ाई, ऊंचाई, एक्स अनुवाद, और आयताकार के लिए वाई अनुवाद सेट करने के लिए बाइंडिंग का उपयोग करता है।WPF शैली में बाध्यकारी निष्पादन योग्य "प्रशासनिक फ्रेमवर्क निष्पादन नहीं ढूंढ सकता" त्रुटि

चौड़ाई और ऊंचाई बाइंडिंग ठीक काम कर रहे हैं, लेकिन मैं TranslateTransform बाइंडिंग के लिए निम्न त्रुटि हो रही है:

<ItemsControl 
    Style="{StaticResource ItemsControlStyle}" 
    ItemsSource="{Binding Zones}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Rectangle Style="{StaticResource RectangleStyle}" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

यहाँ है:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Offset.X; DataItem=null; target element is 'TranslateTransform' (HashCode=16452547); target property is 'X' (type 'Double')

यहाँ मेरी ItemControl की परिभाषा है ItemsControlStyle की परिभाषा:

<Style x:Key="ItemsControlStyle" TargetType="ItemsControl"> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <Canvas /> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ItemContainerStyle"> 
     <Setter.Value> 
      <Style> 
       <Setter Property="Canvas.Left" Value="{Binding Point.X}" /> 
       <Setter Property="Canvas.Top" Value="{Binding Point.Y}" /> 
      </Style> 
     </Setter.Value> 
    </Setter> 
</Style> 

और यहाँ RectangleStyle की परिभाषा है:

<Style x:Key="RectangleStyle" TargetType="Rectangle"> 
    <Setter Property="Width" Value="{Binding Size.Width}" /> 
    <Setter Property="Height" Value="{Binding Size.Height}" /> 
    <Setter Property="RenderTransform"> 
     <Setter.Value> 
      <!-- these bindings are causing the error --> 
      <TranslateTransform X="{Binding Offset.X}" Y="{Binding Offset.Y}" /> 
     </Setter.Value> 
    </Setter> 
</Style> 

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

बाइंडिंग को ठीक करने के लिए मैं क्या कर सकता हूं?

https://connect.microsoft.com/VisualStudio/feedback/details/746840/misleading-cannot-find-governing-frameworkelement-error-message-appears-in-output-window

+0

अच्छा, डुप्लिकेट करना आसान है। मैंने लगभग 10 अलग-अलग चीजों की कोशिश की, लेकिन बाइंडिंग ठीक काम करने के साथ मैं सोच रहा हूं कि क्या आपको इसे एमएस कनेक्ट पर लॉग करना चाहिए और उन्हें आश्चर्य है कि यह एक बग है या नहीं। –

+0

ऐसा लगता है कि बग रिपोर्ट लिंक या तो बदल गया है या अब सार्वजनिक नहीं है। एक्स जोड़ने के बाद इस के संकल्प के बारे में सोचना: नाम मेरे लिए कुछ भी नहीं करता है। –

उत्तर

41

मैं भी व्याख्या नहीं कर सकते क्यों त्रुटि संदेश होता है, लेकिन मुझे पता चला है कि एक एक्स जोड़ने:

<TranslateTransform x:Name="myTransform" X="{Binding Offset.X}" Y="{Binding Offset.Y}" /> 
+0

मेरे पास एक ही समस्या है जब मैं अपने नियंत्रण टेम्पलेट ट्रिगर में GradientStops का उपयोग करता हूं। एक एक्स देना: नाम मेरे लिए काम नहीं कर रहा है। यह बग वास्तव में निराशाजनक है क्योंकि मेरे पास एक नियंत्रण के लिए लगभग 20 ग्रेडियंटस्टॉप हैं और मेरे दृश्य में मैं इस नियंत्रण 30 टाइम्स का उपयोग करता हूं। अब आप छवि को डिबगिंग करते समय दृश्य को खोलने में कितना समय लग सकते हैं ... – Bulli

+4

मुझे एक ही समस्या थी। नरक में क्या है x: बाध्यकारी के साथ क्या करने के लिए नाम ??? – Enyra

+1

अच्छा कामकाज; उन नकली त्रुटियां वास्तव में मुझे परेशान कर रही थीं। यह देखते हुए कि मूल पोस्ट के बाद से कितने साल हुए हैं, मुझे लगता है कि यह तय करने का फैसला किया गया कि यह तय करने योग्य नहीं है। –

9

मुझे लगता है मैं कुछ उपयोगी जानकारी मिल गया लगता है:


संपादित

मैं एमएस कनेक्ट पर एक बग रिपोर्ट प्रस्तुत की।

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/db050ce6-d084-41ad-9a31-c01831687683

इसका जवाब व्यवहार के माइक्रोसॉफ्ट विवरण में होने के लिए एक ItemsControl अपने संयोजन प्रक्रिया के माध्यम से चला जाता है और बाइंडिंग और शैलियों लागू होता है के रूप में प्रकट होता है। यही है, डब्ल्यूपीएफ अपने डेटा टेम्पलेट को अनुकूलित करने का प्रयास कर रहा है इससे पहले कि इसका डेटा का स्रोत सफलतापूर्वक बाइंडिंग का मूल्यांकन करने के लिए हो: "dataitem = null"। अपने लेआउट के दौरान हर दूसरे उदाहरण में, "डेटािटिम" आपके "जोन्स" में कुछ इंगित करता है INumerable और यह बाइंडिंग को पूरा करने में सक्षम है। अन्यथा, प्रति संपत्ति केवल एक बार के बजाय, आप अपने संग्रह में प्रत्येक आइटम के साथ त्रुटि देखेंगे।

ऐसा लगता है कि यह "पर्दे के पीछे आदमी को ध्यान नहीं देता" चीज़ का प्रकार है। और इसे शायद एक बग रिपोर्ट के रूप में एमएस कनेक्ट में जोड़ा जाना चाहिए; सफल कोड को "त्रुटि" नहीं करना चाहिए जो इससे कोई फर्क नहीं पड़ता। लेकिन अगर आप चाहें तो एमएस कनेक्ट के साथ इसे फाइल करने के लिए मैं इसे छोड़ दूंगा।

+1

+1, मैं सहमत हूं, और मैंने बस एमएस कनेक्ट पर एक बग सबमिट किया है: https://connect.microsoft.com/VisualStudio/feedback/details/746840/misleading-cannot-find-governing-frameworkelement-error-message-appears -इन-आउटपुट-विंडो – devuxer

+3

वाह। यह निर्णय लेने के लिए उन्हें पांच मिनट की तरह कुछ ले गया "जी व्हिज वाह, यार ठीक है, लेकिन हम इसे ठीक करने वाले नहीं हैं।" –

+1

मुझे आश्चर्य है कि क्या WPF पहले से ही WinRT पर पिछली सीट ले रहा है। – devuxer

1

रोब पढ़ने के बाद: को बदलने के लिए नाम संपत्ति एक तरह से त्रुटि संदेश से छुटकारा पाने के लिए है पर्किन्स का जवाब, मैंने इस मुद्दे के साथ बाध्यकारी में एक FallbackValue जोड़ा। यह मेरे लिए त्रुटि को मंजूरी दे दी।

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