在 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
祝你好运!
ColorAnimation
的 To
属性 需要颜色类型的对象。 PhoneAccentBrush
是 SolidColorBrush 类型。
这里有两个建议(我没有测试过,但我认为它们应该有效):
SolidColorBrush
类型的对象有一个 属性 Color
类型 Color
,您可以像这样使用 {Binding Color, Source={StaticResource PhoneColorBrush}}
。
也可以使用PhoneAccentColor
静态资源,基本上就是PhoneAccentBrush
画笔的颜色,像这样:{StaticResource PhoneAccentColor}
.
此外,如果您不是真正为颜色添加动画效果,您可以像这样更改整个画笔:
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
</ObjectAnimationUsingKeyFrames>
我希望其中一些对您有用! :)
我在特定于解决方案 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
祝你好运!
ColorAnimation
的 To
属性 需要颜色类型的对象。 PhoneAccentBrush
是 SolidColorBrush 类型。
这里有两个建议(我没有测试过,但我认为它们应该有效):
SolidColorBrush
类型的对象有一个 属性Color
类型Color
,您可以像这样使用{Binding Color, Source={StaticResource PhoneColorBrush}}
。也可以使用
PhoneAccentColor
静态资源,基本上就是PhoneAccentBrush
画笔的颜色,像这样:{StaticResource PhoneAccentColor}
.
此外,如果您不是真正为颜色添加动画效果,您可以像这样更改整个画笔:
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
</ObjectAnimationUsingKeyFrames>
我希望其中一些对您有用! :)