WP8 ListPicker扩展模式背景

时间:2013-03-19 05:59:31

标签: windows-phone-8 windows-phone listpicker

当设备主题设置为黑暗时,ListPicker控件具有以下内容:

  • 普通模式 - 背景是透明的。
  • 扩展模式 - 背景为白色。

当设备主题设置为浅时,ListPicker控件具有以下内容:

  • 普通模式 - 背景是透明的。
  • 扩展模式 - 背景是透明的。

我在listpicker的items集合中使用了一个图像+文本。如果主题设置为浅,它可以正常工作。但是,当主题设置为暗时,图像以正常模式显示,但在扩展模式下不可见。有关解决方法的任何想法吗?

见下面的图片

Light theme - normal mode Light theme - expanded mode Dark theme - normal mode Dark theme - expanded mode

1 个答案:

答案 0 :(得分:2)

我有两条建议很快,不需要对ListPicker控件进行大量修改......

1)将手机的强调色用作图片的OpacityMask ...

<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
    <StackPanel Orientation="Horizontal">
        <Rectangle Fill="{StaticResource PhoneAccentBrush}" Height="40" Width="40">
            <Rectangle.OpacityMask>
                <ImageBrush ImageSource="{Binding Icon}" />
            </Rectangle.OpacityMask>
        </Rectangle>
        <TextBlock Text="{Binding Name}" />
    </StackPanel>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>

如果图标使用强调色,则它将在黑色或白色背景上显示。

2)更改ListPicker突出显示状态的背景颜色,使其在使用Light主题(默认)时为白色,在使用Dark主题时为黑色(与默认值不同)。我也改变了前景颜色。

<ObjectAnimationUsingKeyFrames
    Storyboard.TargetName="UserControl"
    Storyboard.TargetProperty="Foreground"
    Duration="0">
<DiscreteObjectKeyFrame
    Value="{StaticResource PhoneForegroundBrush}"
    KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames
    Storyboard.TargetName="Border"
    Storyboard.TargetProperty="Background"
    Duration="0">
<DiscreteObjectKeyFrame
    Value="{StaticResource PhoneBackgroundColor}"
    KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>

更改控件的主题不应该导致提交问题,只要控件是a)仍然可用,b)适用于Dark和Light主题。