2012-06-14 14 views
5

मैं एक WPF एप्लिकेशन पर काम कर रहा हूं जिसमें बहुत सी स्क्रीन हैं और प्रत्येक स्क्रीन पर बहुत सारे नियंत्रण हैं। यह निर्धारित करना बहुत मुश्किल है कि कौन सा नियंत्रण केंद्रित है।फोकस होने पर एक WPF नियंत्रण को हाइलाइट करें

तो मैं उस नियंत्रण को हाइलाइट करना चाहता हूं जिस पर वर्तमान में इस पर ध्यान केंद्रित किया गया है। यह टेक्स्टबॉक्स, बटन, combobox, listbox या ग्रिड हो सकता है।

बेहतर होगा अगर हम शैलियों और ट्रिगर्स का उपयोग करके ऐसा कर सकें।

धन्यवाद

उत्तर

7

आपको सही घटना के लिए ट्रिगर का उपयोग करना चाहिए। आपके मामले में यह IsFocused है। सरल उदाहरण:

<Trigger Property="IsFocused" Value="true"> 
    <Setter Property="BorderBrush" Value="Red" /> 
    <Setter Property="BorderThickness" Value="1" /> 
</Trigger> 

आप एक Style टैग का उपयोग करता है, तो आप (TargetType="{x:Type TextBox}" उपयोग करते हैं, उदाहरण के लिए) एक विशेष नियंत्रण प्रकार के लिए इस शैली लागू करना चाहते हैं चाहिए।

आप करने के लिए, अपने आवेदन में प्रकार सभी नियंत्रण लागू करने के लिए की तुलना में आप ट्रिगर की केवल इस तरह के प्रकार के साथ और बस BasedOn विशेषता के मदद से अपने कस्टम शैलियों में वारिस की तुलना में एक आधार शैली का उपयोग पर विचार करना चाहिए चाहते हैं: <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseFocusStyle}">

ऐसा करने का अच्छा उदाहरण यह है कि एक प्रश्न: "How to make Style.Triggers trigger a different named style to be applied"।

0

मैं प्रत्येक नियंत्रण के लिए कस्टम शैलियों में दृश्य राज्यों का उपयोग करने का सुझाव दूंगा। सभी मानक नियंत्रण इस दृश्य स्थिति को बढ़ावा देंगे। उदाहरण के लिए button के लिए एमएसडीएन शैली देखें, आप देखेंगे कि फोकस के लिए एक दृश्य स्थिति है। This एमएसडीएन लेख आपकी मदद भी कर सकता है।

0

आप इस व्यवहार के लिए adorner भी कोशिश कर सकते हैं और बना सकते हैं;

http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation

- मामले में आप 3'rd पार्टी खुला स्रोत पुस्तकालय का उपयोग करने के तो codeplex पर इस कार्यान्वयन पर एक नजर है खुले हैं, तो आप भी अपने खुद के adorner को लागू करने के बारे में जानकारी प्राप्त करने के कोड के माध्यम से जा सकते हैं

enter image description here

एक और इसी तरह के सवाल अन्य समाधान के बारे में विवरण होने - Reusable way to put a bright red box around whatever element currently has focus?

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