0
我發現字體顏色來自列表框或組合框的內容(即,在控件模板外部)。當項目未被選中時,我想在白色背景上顯示黑色文本,選中時會顯示黑色背景和白色文本。 不幸的是我一直無法弄清楚如何改變文字顏色。我努力尋找在選定和未選擇背景顏色之間形成鮮明對比的顏色。設置選擇的字體顏色與列表框控件中的未選中的字體顏色不同
簽入Silverlight 3,你似乎不能在那裏做到這一點。
我發現字體顏色來自列表框或組合框的內容(即,在控件模板外部)。當項目未被選中時,我想在白色背景上顯示黑色文本,選中時會顯示黑色背景和白色文本。 不幸的是我一直無法弄清楚如何改變文字顏色。我努力尋找在選定和未選擇背景顏色之間形成鮮明對比的顏色。設置選擇的字體顏色與列表框控件中的未選中的字體顏色不同
簽入Silverlight 3,你似乎不能在那裏做到這一點。
我設法在Silverlight 4中做一個類似的東西,用於彈出一個AutoCompleteBox下的列表框,但它有大量的Binging和XAML強姦。
基本上你必須創建一個ListBoxItem樣式並強制它下面的一些控件模板hackery。這然後你可以應用在你的ListBox上,它應該可以工作。
我剛剛從我正在處理的項目中複製了相關的代碼,因此您必須稍微調整它,但它確實會更改鼠標移過來的字體和選擇矩形的顏色,所以應該很棒開始。
<Style x:Key="MyListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="Foreground" Value="#FF4C4C4C" />
<Setter Property="FontStyle" Value="Normal" />
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.2" To="MouseOver">
<VisualTransition.GeneratedEasingFunction>
<CubicEase EasingMode="EaseOut"/>
</VisualTransition.GeneratedEasingFunction>
</VisualTransition>
<VisualTransition From="MouseOver" GeneratedDuration="0:0:0.1">
<VisualTransition.GeneratedEasingFunction>
<CubicEase EasingMode="EaseOut"/>
</VisualTransition.GeneratedEasingFunction>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="fillColor" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<ColorAnimation Duration="0" To="#FFFFFFFF" Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected"/>
<VisualState x:Name="Selected">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="fillColor2" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle x:Name="fillColor" IsHitTestVisible="False" Opacity="0" RadiusX="1" RadiusY="1" Fill="#FF1f6cae"/>
<Rectangle x:Name="fillColor2" IsHitTestVisible="False" Opacity="0" Fill="#FF000000" RadiusX="1" RadiusY="1"/>
<ContentControl HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Foreground="#FF4c4c4c"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="FontSize" Value="14"/>
</Style>
它應該直接在UserControl.Resources下進行,並且您將準備好將其綁定。
讓我知道你是否管理或需要更多的解釋!
現在就開始新項目,但是當我有一些空閒時間時會檢查它。乾杯 – 2010-08-12 02:41:06