开发者

Change the background in ListPicker´s FullMode in WP7?

Anyone knows how to easily change the background in ListPicker´s FullMode? Do I need to set a style to be able to do that? I´ve tried that, but can´t find the right place to set the background... If it is a style that needs to be used, where exactly in that style can I set the background? Any help would be highly appreciated :)

Here is the standard Style for the ListPicker:

<Style TargetType="toolkit:ListPicker"> 
    <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/> 
    <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/> 
    <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    <Setter Property="Margin" Value="{StaticResource PhoneTouchTargetOverhang}"/> 
    <Setter Property="Template"> 
        <Setter.Value> 
            <ControlTemplate TargetType="toolkit:ListPicker"> 
                <StackPanel> 
                    <VisualStateManager.VisualStateGroups> 
                        <VisualStateGroup x:Name="PickerStates"> 
                            <VisualState x:Name="Normal"/> 
                            <VisualState x:Name="Expanded"> 
                                <Storyboard> 
                                    <ObjectAnimationUsingKeyFrames 
                                        Storyboard.TargetName="Border" 
                                        Storyboard.TargetProperty="Background" 
                                        Duration="0"> 
                                        <DiscreteObjectKeyFrame 
                                            Value="{StaticResource PhoneTextBoxEditBackgroundColor}" 
                                            KeyTime="0"开发者_如何学Go/> 
                                    </ObjectAnimationUsingKeyFrames> 
                                    <ObjectAnimationUsingKeyFrames 
                                        Storyboard.TargetName="Border" 
                                        Storyboard.TargetProperty="BorderBrush" 
                                        Duration="0"> 
                                        <DiscreteObjectKeyFrame 
                                            Value="{StaticResource PhoneTextBoxEditBorderBrush}" 
                                            KeyTime="0"/> 
                                    </ObjectAnimationUsingKeyFrames> 
                                </Storyboard> 
                            </VisualState> 
                        </VisualStateGroup> 
                    </VisualStateManager.VisualStateGroups> 
                    <ContentControl 
                        Content="{TemplateBinding Header}" 
                        ContentTemplate="{TemplateBinding HeaderTemplate}" 
                        Foreground="{StaticResource PhoneSubtleBrush}" 
                        FontSize="{StaticResource PhoneFontSizeNormal}" 
                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
                        Margin="0 0 0 8"/> 
                    <Grid> 
                        <Border 
                            x:Name="Border" 
                            Background="{TemplateBinding Background}" 
                            BorderBrush="{TemplateBinding Background}" 
                            BorderThickness="2"> 
                            <Canvas x:Name="ItemsPresenterHost" MinHeight="46"> 
                                <ItemsPresenter x:Name="ItemsPresenter"> 
                                    <ItemsPresenter.RenderTransform> 
                                        <TranslateTransform x:Name="ItemsPresenterTranslateTransform"/> 
                                    </ItemsPresenter.RenderTransform> 
                                </ItemsPresenter> 
                            </Canvas> 
                        </Border> 
                        <Popup x:Name="FullModePopup"> 
                            <Border Background="{StaticResource PhoneChromeBrush}"> <!-- Popup.Child should always be a Border --> 
                                <Grid> 
                                    <Grid.RowDefinitions> 
                                        <RowDefinition Height="Auto"/> 
                                        <RowDefinition/> 
                                    </Grid.RowDefinitions> 
                                    <ContentControl 
                                        Grid.Row="0" 
                                        Content="{TemplateBinding FullModeHeader}" 
                                        Foreground="{StaticResource PhoneForegroundBrush}" 
                                        FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
                                        FontSize="{StaticResource PhoneFontSizeMedium}" 
                                        HorizontalAlignment="Left" 
                                        Margin="24 12 0 0"/> 
                                    <ListBox 
                                        x:Name="FullModeSelector" 
                                        Grid.Row="1" 
                                        ItemTemplate="{TemplateBinding ActualFullModeItemTemplate}" 
                                        FontSize="{TemplateBinding FontSize}" 
                                        Margin="{StaticResource PhoneMargin}"> 
                                        <ListBox.ItemsPanel> 
                                            <ItemsPanelTemplate> 
                                                <StackPanel/> <!-- Ensures all containers will be available during the Loaded event --> 
                                            </ItemsPanelTemplate> 
                                        </ListBox.ItemsPanel> 
                                    </ListBox> 
                                </Grid> 
                            </Border> 
                        </Popup> 
                    </Grid> 
                </StackPanel> 
            </ControlTemplate> 
        </Setter.Value> 
    </Setter> 
</Style>


There is no way to do this through templating.

The only way to do this is by changing the source of the control. (You'll need to change the Style for TargetType="controls:ListPicker".)

Specifically, you'll ned to change the contents of the FullModePopup.


I was wondering this same thing.

While there is no way of directly changing the background color of the ListPicker, it does follow along with the color of the PhoneChromeBrush resource, and thus you can override the color of all of those in your app to change the color of this background.

For example:

((SolidColorBrush)App.Current.Resources["PhoneChromeBrush"]).Color = Colors.Cyan;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜