1

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

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

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

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

我在列表选择器的项目集合中使用图像+文本。如果主题设置为亮,它工作正常。但是,当主题设置为暗时,图像在正常模式下显示,但在展开模式下不可见。对此有任何解决方法的想法吗?

请参阅下面的图片

轻主题 - 普通模式 轻主题 - 扩展模式 深色主题 - 普通模式 深色主题 - 扩展模式

4

1 回答 1

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) 适用于深色和浅色主题,像这样更改控件的主题不应导致提交问题。

于 2013-03-20T16:55:21.723 回答