自定义主题覆盖默认主题WP7

Jos*_*ose 5 xaml themes windows-phone-7

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

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

http://windowsphonegeek.com/articles/Creating-WP7-Custom-Theme-ndash-Basic-Theme-Implementation 覆盖Windows Phone 7中的主题

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/CustomThemeResources.xaml" />
            <ResourceDictionary Source="Resources/CustomThemeStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

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

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

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="CustomThemeResources.xaml" />
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

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

<Grid Background="{StaticResource PhoneBackgroundBrush}">
...
</Grid>
Run Code Online (Sandbox Code Playgroud)

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

Bor*_*ska 4

在当前版本的 WP7 中,不可能有一种新样式可以更改默认样式,而无需通过“x:Key”显式设置它:

\n\n

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

\n\n

现在您可以:

\n\n
    \n
  1. 仅覆盖默认画笔/颜色资源,如您指出的第一篇文章中所述。请注意,所有 WP7 控件都会更改其颜色。另请注意,由于某种原因,默认背景保持不变。这是当前版本 WP7 的一个已知问题,可能会在“Mango”更新中得到修复。

  2. \n
  3. 如果您想要任何新的 Style/ControlTemplate,则必须使用您指出的第二篇文章中提到的“x:Key”/{StaticResource ...} 方法。

  4. \n
\n\n

最后,正如Derek Lakin之前提到的:希望这个错误能够在 Mango 更新中得到修复!

\n