在 WP8.1 通用应用程序中使用 PhoneAccentBrush

Using PhoneAccentBrush in WP8.1 Universal app

我在特定于解决方案 WP8.1 部分的页面中有一个列表视图,使用标准 ObservableCollection 作为项目源。我想突出显示所选项目,目前它使用的只是一个文本块的数据模板。 WP8.1基础控件似乎支持此功能,仅在W8.1版本中支持。

遵循此处介绍的解决方案; How to change color of the selected ListView item [WP8.1] 我设法让它用指定的颜色突出显示,但我真的很想能够绑定到 phone 的强调色,我确信我能够在 WP8 中绑定到它.0,但该资源在通用应用程序的页面中不可用。

目前我已经将 'red' 的直接颜色规范替换为

<ColorAnimation Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="{ThemeResource PhoneChromeColor}"/>

这可以突出项目,但显然不是我想要的颜色。

我可以访问 xaml 中的 PhoneAccentBrush 吗?有没有更好的方法来实现我的目标?我不是专业开发人员,所以一些 'user friendly' 指导会很有帮助。谢谢

PhoneAccentBrush 可通过 {StaticResource PhoneAccentBrush} 在 XAML

中获得

我想首先同意@Scoregraphic 是正确的。您的错误消息是您独有的。话虽如此,您应该知道 Windows 上的强调笔刷始终是紫色的。因此,使用重音刷没有什么价值。

您可以使用特定于设备的样式来解决这个问题。这意味着您可以在 Phone 应用程序中使用强调画笔,但在您的 Windows 应用程序中,您可以添加您想要的任何逻辑以获得有意义的颜色。

我在这里更多地讨论特定于设备的样式:

http://channel9.msdn.com/series/Developing-Universal-Windows-Apps-with-C-and-XAML/03#time=27m00s

祝你好运!

ColorAnimationTo 属性 需要颜色类型的对象。 PhoneAccentBrush 是 SolidColorBrush 类型。

这里有两个建议(我没有测试过,但我认为它们应该有效):

  1. SolidColorBrush 类型的对象有一个 属性 Color 类型 Color,您可以像这样使用 {Binding Color, Source={StaticResource PhoneColorBrush}}

  2. 也可以使用PhoneAccentColor静态资源,基本上就是PhoneAccentBrush画笔的颜色,像这样:{StaticResource PhoneAccentColor}.

此外,如果您不是真正为颜色添加动画效果,您可以像这样更改整个画笔:

<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background)">
    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
</ObjectAnimationUsingKeyFrames>

我希望其中一些对您有用! :)