2013-02-19 55 views
14

किसी को भी पता है क्या XAML बाइंडिंग में FindAncestor के "नया तरीका" क्या है? RelativeSourceMode (http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.relativesourcemode) को देखते हुए वहाँ केवल विकल्प स्वयं या TemplatedParent संदर्भित करने के लिए छोड़ दिया है। FindAncestor चला गया है। मैं जानना चाहता हूं कि FindAncestor का उपयोग करके तय की गई समस्याओं के सामान्य समाधान क्यों और क्या हैं।WinRT (विन 8) स्टोर ऐप्स XAML बाइंडिंग RelativeSourceMode FindAncestor लापता?

सादर गोप

+5

सहमत, यह मुश्किल बेकार है। – Mic

उत्तर

14

यह क्यों याद आ रही है? कोई विचार नहीं, लेकिन मुझे संदेह है कि "माइक्रोसॉफ्ट के पास समय पर सभी सुविधाओं को लागू करने के लिए पर्याप्त समय नहीं था" के अलावा एक स्पष्टीकरण है।

एक आसान काम के आसपास ElementName बजाय का उपयोग करने के, में है:

Binding={ ElementName=TheNameOfTheAncesor, Path=DataContext.TheViewModelProperyIWantToBindTo } 

और एक एक्स जोड़ने के लिए: नाम पूर्वज आप अपने FindAncestor बंधन को इंगित करना चाहता था विशेषता:

<TextBlock x:Name="TheNameOfTheAncestor" /> 
+2

हाँ, यह याद आ रही है ... :) ElementName सरल परिदृश्यों में काम करता है लेकिन नहीं, एक ControlTemplate अंदर अगर हैं, क्योंकि ElementNames प्रत्येक टेम्प्लेटेड नियंत्रण के लिए अलग हैं। – Gope

+1

यह मेरा तीसरा था "माइक्रोसॉफ्ट के पास सभी सुविधाओं को लागू करने के लिए पर्याप्त समय नहीं था" समस्या दो दिनों में थी। धन्यवाद सर, यह मेरे लिए अच्छा काम किया। –

+0

अगर यह XAML है, मेरा मानना ​​है कि यह वास्तव में 'होना चाहिए {बाइंडिंग ElementName = ...}' बजाय 'बाध्यकारी = {Elementname = ...}' – dlatikay

4

इस कमी के लिए कोई सामान्य समाधान afaik, उदाहरण के लिए आप DataTemplate में ListViewItem गुण उपयोग नहीं कर सकते तो आप sel पर प्रतिक्रिया नहीं कर सकते हैं ection खूबसूरती से बदल जाते हैं। जब तक FindAncestor जोड़ दिया जाएगा आप प्रत्येक विशेष मामले के लिए वैकल्पिक हल खोजना चाहिए (मैं विश्वास नहीं कर सकता कि इस अभाव सिर्फ समय की कमी के कारण नहीं है)