क्या कोई जानता है,WPF में क्लिक किए जाने पर कॉम्बोबॉक्स पृष्ठभूमि रंग कैसे बदलें (कॉम्बोबॉक्स खुला है)?
WPF में क्लिक किए जाने पर कॉम्बोबॉक्स पृष्ठभूमि रंग कैसे बदलें (कॉम्बोबॉक्स खुला है)?
क्या कोई जानता है,WPF में क्लिक किए जाने पर कॉम्बोबॉक्स पृष्ठभूमि रंग कैसे बदलें (कॉम्बोबॉक्स खुला है)?
WPF में क्लिक किए जाने पर कॉम्बोबॉक्स पृष्ठभूमि रंग कैसे बदलें (कॉम्बोबॉक्स खुला है)?
यहाँ एक से थोड़ा अनुभवहीन दृष्टिकोण है:
<ComboBox
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="100"
>
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<Trigger Property="IsDropDownOpen" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
प्रारंभ में, इस Green
को Background
संपत्ति सेट, लेकिन जब ड्रॉप-डाउन दिखाई देता है यह Red
पर जाने के लिए व्यवस्थित करता है। हालांकि, इस के साथ दो समस्याएं हैं:
ComboBox.Background
संपत्ति केवल बटन की उपस्थिति को प्रभावित करती है, न कि ड्रॉपडाउन सूची। यह संभव है कि आप वास्तव में जो करना चाहते हैं वह उस भाग के पृष्ठभूमि रंग को बदल देता है जो पॉप-अप होता है।अगर 2 है आप चाहते हैं, यह काम कर देता है:
<ComboBox
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="100" >
<ComboBox.Resources>
<Style TargetType="ComboBoxItem">
<Setter Property="Background" Value="Orange" />
</Style>
</ComboBox.Resources>
</ComboBox>
सच पूछिये तो, कि वास्तव में ComboBoxItem
नियंत्रण कि लटकती में प्रदर्शित की पृष्ठभूमि का रंग बदल रहा है लेकिन यह है कि वांछित प्रभाव पड़ेगा ।
आप 1 ठीक करने के लिए, हालांकि, आप एक कस्टम टेम्पलेट्स, क्योंकि निर्मित ComboBox
टेम्पलेट वास्तव में Background
संपत्ति के लिए बहुत अच्छा समर्थन प्रदान नहीं करता है, क्योंकि यह बटन भाग के रंग बदल जाता है की आवश्यकता होगी चाहते हैं विभिन्न परिस्थितियों में। ComboBox
के लिए एरो थीम की खोज वास्तव में एक कस्टम पृष्ठभूमि रंग का समर्थन करने के लिए डिज़ाइन नहीं की गई है, इसलिए आपको नियंत्रण के लिए अपना स्वयं का कस्टम रूप बनाना होगा।
ठीक है, के पीछे कोड के लिए अपने सवाल का जवाब देने:
((ComboBox)o).Background = GetBrushByRGB(r, g, b);
foreach (ComboBoxItem item in ((ComboBox)o).Items)
{
item.Background = GetBrushByRGB(r, g, b);
}
तो मूल रूप से:
foreach (String tag in tags)
{
ComboBoxItem item = new ComboBoxItem();
item.Content = tag;
cbTags.Items.Add(item);
}
तो फिर तुम आइटम पृष्ठभूमि रंग संशोधित कर सकते हैं:
अपने कॉम्बो बॉक्स के लिए आइटम जोड़ें आपको कॉम्बोबॉक्स इटिम के बैककलर को बदलने की जरूरत है।
सबसे पहले, आपको Combobox के लिए डिफ़ॉल्ट टेम्पलेट प्राप्त करने की आवश्यकता है (यदि आपको उनकी आवश्यकता है तो नीचे दिए गए विवरण)। फिर, पहले "ControlTemplate.Triggers" टैग के अंदर इस XAML डाल:
<DataTrigger Binding="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter Property="Background" TargetName="templateRoot" Value="Red"/>
</DataTrigger>
आपका बता गया बटन लाल हो जाएगा जब लटकती खुला है।
डिफ़ॉल्ट टेम्पलेट प्राप्त करने के लिए: विजुअल स्टूडियो 2015 में, डिज़ाइन मोड में अपना पृष्ठ देखें। फिर, combobox पर राइट-क्लिक करें, और "टेम्पलेट संपादित करें-> एक प्रतिलिपि संपादित करें" चुनें। यह आपके लिए डिफ़ॉल्ट टेम्पलेट जेनरेट करेगा।
क्या आप हमें बता सकते हैं कि आप किस भाषा या ढांचे का उपयोग कर रहे हैं? – Dominic
क्या प्रोग्रामिंग भाषा? – spajce
हैलो, यह डब्ल्यूपीएफ है (।नेट) – Nimesh