Как установить выбранный цвет для элемента ListPicker - PullRequest
1 голос
/ 27 ноября 2011

В настоящее время выбранный элемент в ListPicker настраивается на цветовой акцент на телефоне. Как мне переопределить его с помощью пользовательского цвета?

Я знаю, что это будет сделано с помощью стиля, но я не уверен, что это должно быть ...

1 Ответ

4 голосов
/ 27 ноября 2011

Это зависит от 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 - единственный способ - изменить исходный код инструментария и собрать его с необходимыми изменениями. На мой взгляд, оно того не стоит.

...