मुझे पता है कि यह एक पुराना धागा है, लेकिन मेरे पास है इस समस्या का हल। मैं आलंड ली के सुझाव का उपयोग करने में सक्षम था, here मिला। यह सीएसएस में जितना सामान्य नहीं है, लेकिन यदि आप मूल तत्व प्रकार को जानते हैं, तो यह अच्छी तरह से स्टाइल में भी काम करता है।
यहां एक उदाहरण दिया गया है कि मैंने इसका उपयोग कैसे किया। मेरे पास टेक्स्टबॉक्स नियंत्रण है जो फोकस करते समय "हाइलाइट रंग" के साथ रोशनी करता है। इसके अतिरिक्त, जब टेक्स्टबॉक्स ने फोकस किया था, तो मैं इसके संबंधित लेबल नियंत्रण को भी प्रकाश देना चाहता था। इसलिए मैंने लेबल नियंत्रण के लिए एक ट्रिगर लिखा जिसने इसे टेक्स्टबॉक्स नियंत्रण के समान तरीके से प्रकाश दिया। यह ट्रिगर एक कस्टम संलग्न संपत्ति द्वारा ट्रिगर किया जाता है जिसे IsFocusedByProxy कहा जाता है। तब मुझे लेबल की IsFocusedByProxy को टेक्स्टबॉक्स के IsFocused में बाध्य करने की आवश्यकता थी। इस बिंदु पर
<Grid x:Name="MaxGrid">
<Label x:Name="MaxLabel"
Content="Max:"
c5:TagHelper.IsFocusedByProxy="{Binding
Path=Children[1].IsFocused,
RelativeSource={RelativeSource AncestorType=Grid}}"
/>
<c5:TextBoxC5Mediator x:Name="MaxTextBox"
DataContext="{Binding ConfigVm.Max_mediator}" />
</Grid>
आप सोच रहे होंगे कि अपने किसी भी बस बाध्यकारी में ElementName का उपयोग करने से की तुलना में बेहतर नहीं: तो मैं इस तकनीक का इस्तेमाल किया। लेकिन अंतर यह है कि अब मैं इस बाध्यकारी एक शैली में पुनर्प्रयोग के लिए स्थानांतरित कर सकते हैं है:
<Setter Property="C5_Behaviors:TagHelper.IsFocusedByProxy"
Value="{Binding Path=Children[1].IsFocused,
RelativeSource={RelativeSource AncestorType=Grid}}" />
जब मैं एक दृश्य इन आवृत्तियां से भरा है और अब मैं कर सकते हैं, इस तरह (मैं सेटअप आवश्यक शैलियाँ करने के लिए परोक्ष लागू किया जा है, तो यही कारण है कि वहाँ) से पता चला कोई मार्कअप शैलियाँ सेट है:
<Grid x:Name="MaxGrid">
<Label x:Name="MaxLabel"
Content="Max:" />
<c5:TextBoxC5Mediator x:Name="MaxTextBox"
DataContext="{Binding ConfigVm.Max_mediator}" />
</Grid>
<Grid x:Name="MinGrid">
<Label x:Name="MinLabel"
Content="Min:" />
<c5:TextBoxC5Mediator x:Name="MinTextBox"
DataContext="{Binding ConfigVm.Min_mediator}" />
</Grid>
<Grid x:Name="StepFactorGrid">
<Label x:Name="StepFactorLabel"
Content="Step Factor:" />
<c5:TextBoxC5Mediator x:Name="StepFactorTextBox"
DataContext="{Binding ConfigVm.StepFactor_mediator}" />
</Grid>
<!-- ... and lots more ... -->
कौन सा मुझे इन परिणामों देता है:
किसी भी पाठ से पहले विभिन्न बक्सें फोकस प्राप्त के साथ
: बक्से ध्यान केंद्रित किया
स्रोत
2013-05-24 18:07:06
मैं क्या होने की संभावना करने के लिए जा रहा हूँ की तरह है कि। समस्या यह है कि कई गुण और कन्वर्टर्स हैं जिन्हें मैं बाध्यकारी लग रहा हूं, इसलिए यह हर संपत्ति के लिए ऐसा करने के लिए बहुत सारी प्रतिलिपि और अतीत हो जाती है। मैं सोच रहा हूं कि मैं ElementName द्वारा टेक्स्टब्लॉक टैग पर बाध्य हो सकता हूं और फिर मुझे आवश्यक गुण प्राप्त करने के लिए सापेक्ष स्रोत स्वयं का उपयोग कर सकता हूं। – Eclipse
क्या यह कभी आपके लिए काम करता है? – Carlo
मैंने केवल एक उपयोगकर्ता-नियंत्रण बनाया जो मुझे आवश्यक मामलों को संभाला। यह बस आसान था। – Eclipse