none
是否可以覆写ListViewItemSelectedBackgroundThemeBrush等系统资源,而不用重写整个ItemContainerStyle RRS feed

  • 问题

  • 由于做的App多处用了ListView,又不希望每个ListView的样式一样,为每个ListView写样式感觉又很笨;

    请问ListViewItemSelectedBackgroundThemeBrush这种系统资源是否可以在每个Page里被重写;

    2012年10月24日 7:04

答案

  • 可以,首先先介绍下,这些资源实际是保存在 C:\Program Files (x86)\Windows Kits\8.0\Include\WinRT\Xaml\Design 下的。你可以找到相关资源和控件默认样式定义。

    然后如何重写,举个例子:

        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
               <SolidColorBrush x:Key="ProgressBarIndeterminateForegroundThemeBrush" Color="#DEFFFFFF"/>
                <SolidColorBrush x:Key="ProgressBarForegroundThemeBrush" Color="#DEFFFFFF"/>
             </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>

    特别注意高亮主题的重写,不要破坏了高亮下的颜色对比。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Schbook 2012年10月26日 2:30
    2012年10月25日 3:41
    版主

全部回复

  • 可以,首先先介绍下,这些资源实际是保存在 C:\Program Files (x86)\Windows Kits\8.0\Include\WinRT\Xaml\Design 下的。你可以找到相关资源和控件默认样式定义。

    然后如何重写,举个例子:

        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
               <SolidColorBrush x:Key="ProgressBarIndeterminateForegroundThemeBrush" Color="#DEFFFFFF"/>
                <SolidColorBrush x:Key="ProgressBarForegroundThemeBrush" Color="#DEFFFFFF"/>
             </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>

    特别注意高亮主题的重写,不要破坏了高亮下的颜色对比。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Schbook 2012年10月26日 2:30
    2012年10月25日 3:41
    版主
  • 多谢,解决了一个难题
    2012年10月26日 2:31
  • 貌似在Page里面定义ThemeDictionaries不会覆盖系统的样式阿,在App.Xaml定义才可以
    2012年10月26日 3:21
  • 我也遇到这个问题,我想在Page里直接写Style覆盖全局的Style,该如何实现?

    2012年11月21日 9:12
  • 是的,ThemeDictionary是主题资源集合,需要在App级别设置。单个页面或者控件范围是不能设置的。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年11月21日 9:26
    版主