2015-06-05 2 views
5

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

किसी कारण से, बस मेरे एक्सएएमएल को फिर से व्यवस्थित करने से बग दूर हो गया।

<StackPanel> 
    <TextBox Text="{Binding Tb1}"/> 
    <TextBox Text="{Binding Tb2}"/> 
    <TextBox Text="{Binding Tb3}" 
      FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
    <TextBox Text="{Binding Tb4}"/> 
</StackPanel> 

Tb1, Tb2 और Tb3 सब काम के लिए बाइंडिंग:

इस उदाहरण लें। टीबी 4 बाइंडिंग टूटा हुआ है। अगर मैं, अंतिम दो पंक्तियों स्वैप इस तरह:

<StackPanel> 
    <TextBox Text="{Binding Tb1}"/> 
    <TextBox Text="{Binding Tb2}"/> 
    <TextBox Text="{Binding Tb4}"/> 
    <TextBox Text="{Binding Tb3}" 
      FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
</StackPanel> 

तो सभी बाइंडिंग ठीक काम करते हैं।

किसी कारण से, एक्सएएमएल में केंद्रित तत्व स्थापित करने से सभी बाइंडिंग टूट जाती हैं जो इसे तोड़ने के बाद आती हैं।

क्या किसी और ने इसे देखा है? यदि हां, तो क्या आप जानते हैं कि ऐसा क्यों होता है?

+0

क्या बाध्यकारी डीबग के दौरान आउटपुट फलक में त्रुटि उत्पन्न करता है, या यह अभी काम नहीं करता है? – goobering

+0

नहीं। इस पूरी प्रक्रिया के दौरान मैं यह सुनिश्चित करना चाहता था कि मेरे पास कोई बाध्यकारी त्रुटियां न हों। अगर मैं आउटपुट में कुछ याद करता हूं तो मैं ट्रेस श्रोता का उपयोग कर रहा हूं। कोई त्रुटि कभी नहीं दिखायी गई थी। बाध्यकारी सिर्फ काम नहीं करता है। – NielW

+0

जब आप कहते हैं कि 'इसके बाद आने वाले सभी बाइंडिंग', क्या आप स्टैकपैनल में सभी बाइंडिंग, या * सभी बाइंडिंग्स * स्टैकपैनल के साथ उन लोगों सहित हैं? – goobering

उत्तर

0

मुझे लगता है कि FocusManager.FocusedElement उपयोग करने के लिए सही तरीका दृश्य पेड़ में उच्च एक तत्व पर संलग्न गुण सेट करने के लिए है:

<StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}"> 
    <Button Name="firstButton" /> 
</StackPanel> 

शायद तत्व पर ही संलग्न संपत्ति की स्थापना में अच्छी तरह से समर्थित नहीं है।

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