xaml – 覆盖默认主题WP7的自定义主题

是否可以创建自定义主题并将其用作默认主题?

我可以在任何地方找到的每个示例都说您可以通过复制ThemeResources.xaml和System.Windows.xaml文件并将它们作为合并的词典包含在您的应用中来创建自定义主题.

http://windowsphonegeek.com/articles/Creating-WP7-Custom-Theme-ndash-Basic-Theme-Implementation
Overriding themes in Windows Phone 7

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/CustomThemeResources.xaml" />
            <ResourceDictionary Source="Resources/CustomThemeStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

然后我又读了一些你需要在样式文件中包含画笔的内容,所以在CustomThemeStyles.xaml我有这个.

http://www.windowsphonegeek.com/articles/Creating-WP7-Custom-Theme—Complex-Theme

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="CustomThemeResources.xaml" />
</ResourceDictionary.MergedDictionaries>

它不起作用……所以我下载了示例应用程序,果然,每个想要改变一些颜色的页面,比如背景颜色,都会将它设置在它最外面的组件上.

<Grid Background="{StaticResource PhoneBackgroundBrush}">
...
</Grid>

是否可以包含更改所有默认值的样式/画笔/颜色/等的自定义主题,而无需在任何地方明确设置它们?

最佳答案
在当前版本的WP7中,如果没有通过“x:Key”显式设置,则可以更改默认样式的新样式:

隐式样式是Silverlight 4(和WPF)的一项功能:Windows Phone 7基于Silverlight 3(添加了一些Silverlight 4功能).由于Silverlight 3中没有隐式样式,这意味着在Windows Phone 7中也无法使用它们.

现在你可以:

>仅覆盖默认的画笔/颜色资源,如您指出的第一篇文章中所述.请注意,所有WP7控件都将更改其颜色.另请注意,由于某种原因,默认背景保持不变.这是当前版本的WP7的已知问题,可能将在“芒果”更新中修复.
>如果您想要任何新的Style / ControlTemplate,您必须使用您指出的第二篇文章中提到的“x:Key”/ {StaticResource …}方法.

最后,正如Derek Lakin先前提到的:希望这个错误将在芒果更新中得到修复!

转载注明原文:xaml – 覆盖默认主题WP7的自定义主题 - 代码日志