【发布时间】:2011-11-27 13:28:55
【问题描述】:
当前 ListPicker 中的选定项目被设置为手机强调色,如何使用自定义颜色覆盖它?
我知道这将通过一种风格来完成,但我不确定这应该是什么......
【问题讨论】:
标签: xaml windows-phone-7 windows-phone-7.1 listpicker
当前 ListPicker 中的选定项目被设置为手机强调色,如何使用自定义颜色覆盖它?
我知道这将通过一种风格来完成,但我不确定这应该是什么......
【问题讨论】:
标签: xaml windows-phone-7 windows-phone-7.1 listpicker
这取决于ListPicker.ExpansionMode。如果是ExpansionAllowed - 你的风格应该是这样的:
<Style TargetType="toolkit:ListPickerItem">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Padding" Value="8 6"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="toolkit:ListPickerItem">
<Grid x:Name="grid" Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="ContentContainer"
Storyboard.TargetProperty="Foreground"
Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<!-- Normal color -->
<SolidColorBrush Color="Black"/>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Selected">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="ContentContainer"
Storyboard.TargetProperty="Foreground"
Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<!-- Selected color -->
<SolidColorBrush Color="Orange"/>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<!-- Optionally - background selected color -->
<!--<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="grid"
Storyboard.TargetProperty="Background"
Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<SolidColorBrush Color="Gray"/>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>-->
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentControl
x:Name="ContentContainer"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Foreground="{TemplateBinding Foreground}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
但是,如果是 FullScreenOnly - 唯一的方法是修改工具包源代码并使用所需的更改构建它。在我看来,这不值得。
【讨论】:
ListPicker 元素 - 将它放在页面资源中,如下所示:<phone:PhoneApplicationPage><phone:PhoneApplicationPage.Resources>%YOUR_STYLE%</phone:PhoneApplicationPage.Resources></phone:PhoneApplicationPage>
Padding。首先,尝试 10 而不是 6。如果这没有帮助 - 你有最新的工具包,November?另一个原因可能是自定义 ItemTemplate,如果你有的话,试试不带它。