मैं सिस्टम रंग के बजाए एक चयनित ListBoxItem के पृष्ठभूमि रंग को सेट करने का प्रयास कर रहा हूं। मैंने पढ़ा है कि मैं यहां एसओ पर क्या पा सकता हूं और पीछा किया है, या माना जाता है कि वहां सिफारिशों का पालन किया गया है (Change background color for selected ListBox item, WPF How to change the listbox selected item text color when the list box loses focus, Change selected and unfocused Listbox style to not be grayed out, और अन्य)।पृष्ठभूमि रंग या WPF सेट करना (4.0) ListBox - विंडोज 8
सभी चयनित आइटम के लिए हाइलाइटब्रश और कंट्रोलब्रश को पारदर्शी पर सेट करके समस्या को हल करने लगते हैं। मेरे पास निम्न XAML है और यह फ़ॉन्ट रंग को ठीक से सेट करता है, लेकिन बैकग्राउंड ब्रश सेटिंग्स के बावजूद डिफ़ॉल्ट पारदर्शी नीला है। मैं अभी भी एक डब्ल्यूपीएफ नोब का थोड़ा सा हूं, इसलिए मुझे यहां कुछ आसान याद आना चाहिए।
<ListBox Width="Auto" Height="Auto" Grid.Column="0" BorderThickness="0" Background="#FFF3F3F3" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ListBox.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>String 1</sys:String>
<sys:String>String 2</sys:String>
<sys:String>String 3</sys:String>
<sys:String>String 4</sys:String>
</x:Array>
</ListBox.ItemsSource>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
</Style.Resources>
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="FontSize" Value="16"/>
<Setter Property="Foreground" Value="#999999"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="White" />
<Setter Property="Foreground" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" HorizontalAlignment="Right" Margin="0,0,8,0" Background="Transparent"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
मैं सही दिशा में किसी भी nudges की सराहना करता हूं।
संपादित:
पहला उत्तर है कि यह एक मामूली बदलाव के साथ उनके लिए काम किया पढ़ने के बाद, मैं अनुप्रयोग है कि मैं अपने Windows 8 मशीन पर विकसित किया गया है ले लिया और एक विंडोज 7 वी एम में यह मार डाला और यह उम्मीद के रूप में काम किया। विंडोज 8 मशीन के साथ-साथ विंडोज 7 पर काम करने के लिए इसे बदलने के लिए क्या जरूरत है इस पर कोई विचार?
बहुत बहुत धन्यवाद। मुझे टेम्पलेट्स से ओवरराइड करने के लिए कुछ शोध करने दें और सुनिश्चित करें कि यह काम करता है, क्योंकि मुझे यकीन है कि यह होगा, और इसे उत्तर के रूप में चिह्नित करेगा। –
@RobGoodwin आपका स्वागत है। स्टाइल ओवरराइड देखने के लिए आप https://www.dropbox.com/s/4ni0dbcgzji5h8n/ListBoxSelectionWin8.rar से अपने प्रश्न के लिए एक साथ नमूना डाउनलोड कर सकते हैं। – Viv
यह काम किया। नमूना पोस्ट करने के लिए समय लेने के लिए धन्यवाद। इसने मुझे विंडोज 7 और 8 पर जल्दी परीक्षण करने की इजाजत दी। और यह मुझे WPF नियंत्रणों को स्टाइल करने के बारे में सीखने के लिए कुछ और स्रोत प्रदान करता है। –