2010-10-18 17 views
7

मेरे पास एक टेक्स्टबॉक्स है जिसे ControlTemplate के माध्यम से परिभाषित किया गया है। ControlTemplate की वजह से, IsEnabled-property को गलत पर सेट होने पर टेक्स्टबॉक्स अब स्वचालित रूप से ग्रे नहीं हो जाता है।एक अक्षम टेक्स्टबॉक्स का पृष्ठभूमि रंग

इस कार्यक्षमता प्रदान करने के लिए, मैं ControlTemplate भीतर निम्नलिखित ट्रिगर का उपयोग करें:

<Trigger Property="IsEnabled" Value="False">        
    <Setter Property="Foreground" Value="{x:Static SystemColors.GrayTextBrush}" /> 
</Trigger> 

यह ठीक काम करता है। हालांकि मुझे पृष्ठभूमि रंग भी सेट करना है, लेकिन मुझे SystemColors में इसी प्रविष्टि नहीं मिली है। विकलांग नियंत्रण (टेक्स्टबॉक्स) की पृष्ठभूमि के लिए कौन सी प्रविष्टि सही प्रविष्टि है? SystemColors से कोई और स्रोत है?

मैं एक निश्चित मूल्य का उपयोग नहीं करना चाहता हूं। जैसे Background="#f4f4f4" सेटिंग, क्योंकि मुझे डर है कि कुछ वातावरण में, अक्षम-पृष्ठभूमि का एक और मूल्य होता है और फिर मेरा नियंत्रण ऐसा नहीं लगता है कि यह भी पढ़ना चाहिए या यहां तक ​​कि अपठनीय भी है (उदाहरण के लिए ग्रेटेक्स्टब्रश का मान # f4 के करीब है)।

उत्तर

14

निम्नलिखित StackOverflow सवाल मदद मिल सकती है:

Visual guide to System.Windows.SystemColors

संपादित करें:

मैं कुछ अतिरिक्त sleuthing किया था और मानक XAML शैलियों कि माइक्रोसॉफ्ट प्रदान करता है (Where can I download Microsoft's standard WPF themes from? देखें) को देखा। आप देख सकते हैं कि SystemColors मान विभिन्न नियंत्रणों के लिए उपयोग किए जाते हैं।

<Trigger Property="IsEnabled" Value="false"> 
    ... 
    <Setter 
     TargetName="Bd" 
     Property="Background" 
     Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
    ... 
</Trigger> 

माइक्रोसॉफ्ट एक विकलांग ComboBox की पृष्ठभूमि रंग के रूप SystemColors.ControlBrushKey उपयोग करता है:

उदाहरण के लिए, यहाँ ComboBox के लिए नियंत्रण टेम्पलेट का एक टुकड़ा है।

+0

+1 धन्यवाद। दिलचस्प पोस्ट, हालांकि मेरे प्रश्न का उत्तर मुझे नहीं मिला है। क्या मुझे कभी याद आ गया है? – HCL

+0

अपनी पृष्ठभूमि के लिए एक निश्चित मान का उपयोग करने के बजाय, आप SystemColors मान का उपयोग करना चाहते हैं, सही? डिफ़ॉल्ट XAML शैलियों को देखकर, ऐसा प्रतीत होता है कि माइक्रोसॉफ्ट SystemColors.ControlBrushKey मान को अक्षम करता है जो नियंत्रण के लिए पृष्ठभूमि रंग के रूप में उपयोग करता है। यह रंग SystemColors.GrayTextBrush के विपरीत होना चाहिए, इसलिए जब नियंत्रण अक्षम हो जाता है तो उपयोगकर्ता मान को पढ़ने में सक्षम होगा। एक महान उत्तर के लिए –

+2

+1। डायनेमिक रिसोर्स के उपयोग पर ध्यान दें ताकि अनुप्रयोग चल रहा हो, जब उपयोगकर्ता विंडोज थीम में रंग बदलता है तो एप्लिकेशन स्वचालित रूप से रंग बदलता है। –

0

Win7 एयरो सिस्टमकॉलर्स के लिए हेक्स मान। नियंत्रण ब्रशकी F0F0F0 है। एफ 4 एफ 4 एफ 4 नहीं। ताकि कोई सही न हो, पता नहीं कि किस का उपयोग करना है, इसलिए मैं एफ 4 एफ 4 एफ 4 का उपयोग कर रहा हूं।

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