zoukankan      html  css  js  c++  java
  • 【WP7】替换系统主题样式

    这个问题弄了好久才搞定,现在分享出来

    有时候我们需要对一些控件进行一些定制的操作,比如修改控件默认的颜色等,但是并不是所有的颜色都可以直接设置的,

    下面以TextBox为例,演示如何修改一些系统内置的一些颜色

      TextBox 控件在编辑的时候默认的背景色为白色,有时候需要做一些透明的效果的时候,比如让TextBox的背景色始终都为透明,与面板的背景保持一致

      1、首先找到关于系统内置一些样式的资源文件  C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Design, 然后找到 ThemeResources.xaml System.Windows.xaml 两个文件,并添加到项目中,这两个文件中,定义了很多系统默认的一些样式属性,包括画笔、颜色、字体、粗细、字号、文本样式等等最基本的元素。当然,并不是所有的定义都在这里

      2、在App.xaml 文件中,添加资源文件到资源字典中 

            <Application.Resources>
                <ResourceDictionary>
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="System.Windows.xaml" />
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
            </Application.Resources>

        然后在 System.Windows.xaml 文件中添加对 ThemeResources.xaml 资源的引用

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

        这样就完成了对资源的引用,接下来是修改 ThemeResources.xaml 资源文件,打开 ThemeResources.xaml 文件,可以找到关于TextBox的一些定义,关于Windows Phone主题资源的定义,可以参考http://msdn.microsoft.com/zh-cn/library/ff769552%28v=vs.92%29.aspx

    View Code
            <!-- TextBox colors -->
    
            <!-- 100 percent Black -->
            <Color x:Key="PhoneTextCaretColor">#FF000000</Color>
    
            <!-- 75 percent White -->
            <Color x:Key="PhoneTextBoxColor">#BFFFFFFF</Color>
    
            <!-- 100 percent Black -->
            <Color x:Key="PhoneTextBoxForegroundColor">#FF000000</Color>
    
            <!-- 100 percent White -->
            <Color x:Key="PhoneTextBoxEditBackgroundColor">#FFFFFFFF</Color>
    
            <!-- 100 percent White -->
            <Color x:Key="PhoneTextBoxEditBorderColor">#FFFFFFFF</Color>
    
            <!-- 47 percent percent Black -->
            <Color x:Key="PhoneTextBoxReadOnlyColor">#77000000</Color>
    
            <!-- 60 percent White -->
            <Color x:Key="PhoneSubtleColor">#99FFFFFF</Color>
    
            <!-- 100 percent White -->
            <Color x:Key="PhoneTextBoxSelectionForegroundColor">#FFFFFFFF</Color>

        修改相应的Color,这里修改TextBox的编辑时的背景色   <Color x:Key="PhoneTextBoxEditBackgroundColor">#FFFFFFFF</Color>   为

                                     <Color x:Key="PhoneTextBoxEditBackgroundColor">#00000000</Color>

        虽然添加了对资源的引用,但是发现,TextBox在编辑状态的背景颜色还是没有改变,任然是白色的(这是由于引用的资源与系统默认的重名了,所以还是引用的是系统的样式,这里把引用名字改成我们自己的,就会生效了)

        在 ThemeResources.xaml System.Windows.xaml 两个文件中找到所有

              PhoneTextBoxEditBackgroundBrushPhoneTextBoxEditBackgroundColor

          替换成 CustomTextBoxEditBackgroundBrushCustomTextBoxEditBackgroundColor    这样系统就不会替换成默认的样式了

        试一下效果吧,看TextBox控件在编辑时背景是不是变透明了,尝试一下其他颜色的修改吧

        

      

  • 相关阅读:
    easyui使用datagrid时列名包含特殊字符导致表头与数据错位的问题
    解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
    使用PreApplicationStartMethodAttribute
    Entity Framework使用Sqlite时的一些配置
    如何自己编写一个easyui插件续
    如何自己编写一个easyui插件
    启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    Tomcat启动报错:java.net.BindException: Cannot assign requested address: JVM_Bind
    Maven项目Eclipse启动时报错: java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener
    ORA-12519, TNS:no appropriate service handler found(数据库上当前的连接数目已经超过最大值)
  • 原文地址:https://www.cnblogs.com/bomo/p/2763985.html
Copyright © 2011-2022 走看看