//这里有篇参考文章

http://www.cnblogs.com/tianhonghui/p/3373276.html#commentform

以下思路是来自徐老师,昨晚看了一个晚上球赛,睡了不到6个小时,又被人拉去游泳,现在各种困。。。

文字我就不多描述,直接上代码吧。

样式style

  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:my="clr-namespace:System;assembly=mscorlib"
  4. xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
  5. xmlns:System="clr-namespace:System;assembly=mscorlib">
  6. <!--自定义一个画刷,也可以用系统,感觉不好控制,还是自己定义的好,实际项目没实战过,到时拿1、2项目练练手在汇报-->
  7. <SolidColorBrush x:Key="S_SolidColorBrush">
  8. <Color>#0478fb</Color>
  9. </SolidColorBrush>
  10.  
  11. <!--标题定义样式-->
  12. <Style TargetType="TextBlock" x:Key="tbTitle">
  13. <Setter Property="Foreground" Value="{StaticResource S_SolidColorBrush}" />
  14. <Setter Property="FontSize" Value="" />
  15. </Style>
  16.  
  17. <!--ListBox里面文字定义样式-->
  18. <Style TargetType="TextBlock" x:Key="listboxTitle">
  19. <Setter Property="Foreground" Value="{StaticResource S_SolidColorBrush}" />
  20. <Setter Property="FontSize" Value="" />
  21. </Style>
  22. </ResourceDictionary>

切换皮肤帮助类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Media;
  7.  
  8. namespace 换皮肤WP
  9. {
  10.  
  11. public class ThemeHelper
  12. {
  13. /// <summary>
  14. /// 设置默认为绿色
  15. /// </summary>
  16. /// <param name="type"></param>
  17. public static void ChangeTheme(ThemeType type = ThemeType.Green)
  18. {
  19. //默认颜色值
  20. var color = Color.FromArgb(, 0x04, 0x78, 0xfb);
  21. //var color = (Color)Application.Current.Resources["S_FontColor"];
  22. switch (type)
  23. {
  24. case ThemeType.Green:
  25. //color=Colors.Green;
  26. //color=Color.FromArgb(255,4,120,255);
  27. //上面方法都不推荐这么写,因为颜色值往往是从ps取出来。16进制0478fb
  28. color = Color.FromArgb(, 0x04, 0x78, 0xfb);
  29. break;
  30. case ThemeType.Blue:
  31. color = Color.FromArgb(, 0x04, 0xfb, 0x72);
  32. break;
  33. default:
  34. //找不到也是默认值
  35. color = Color.FromArgb(, 0x04, 0x78, 0xfb);
  36. break;
  37. }
  38.  
  39. SetColor("S_FontColor", color);
  40. }
  41.  
  42. /// <summary>
  43. /// 设置颜色
  44. /// </summary>
  45. /// <param name="key"></param>
  46. /// <param name="color"></param>
  47. private static void SetColor(string key, Color color)
  48. {
  49. if (Application.Current.Resources.Contains("S_SolidColorBrush"))
  50. {
  51. var brush = (SolidColorBrush)Application.Current.Resources["S_SolidColorBrush"];
  52. brush.Color = color;
  53. }
  54. }
  55. }
  56.  
  57. public enum ThemeType
  58. {
  59. Green = ,
  60. Blue = ,
  61. //…自定义定义更多颜色
  62. }
  63. }

MainPage.xaml

  1. <phone:PhoneApplicationPage
  2. x:Class="换皮肤WP.MainPage"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
  6. xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
  7. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  8. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  9. mc:Ignorable="d" d:DesignWidth="" d:DesignHeight=""
  10. FontFamily="{StaticResource PhoneFontFamilyNormal}"
  11. FontSize="{StaticResource PhoneFontSizeNormal}"
  12. Foreground="{StaticResource PhoneForegroundBrush}"
  13. SupportedOrientations="Portrait" Orientation="Portrait"
  14. shell:SystemTray.IsVisible="True">
  15.  
  16. <!--LayoutRoot 是包含所有页面内容的根网格-->
  17. <Grid x:Name="LayoutRoot" Background="Transparent">
  18. <Grid.RowDefinitions>
  19. <RowDefinition Height="Auto"/>
  20. <RowDefinition Height="*"/>
  21. </Grid.RowDefinitions>
  22.  
  23. <!--TitlePanel 包含应用程序的名称和页标题-->
  24. <StackPanel x:Name="TitlePanel" Grid.Row="" Margin="12,17,0,28">
  25. <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
  26. <TextBlock x:Name="PageTitle" Text="换肤Demo" Margin="9,-7,0,0" Style="{StaticResource tbTitle}"/>
  27. </StackPanel>
  28.  
  29. <!--ContentPanel - 在此处放置其他内容-->
  30. <Grid x:Name="ContentPanel" Grid.Row="" Margin="12,0,12,0">
  31. <ListBox ItemsSource="{Binding Words}">
  32. <ListBox.ItemTemplate>
  33. <DataTemplate>
  34. <TextBlock Text="{Binding}" Style="{StaticResource listboxTitle}" />
  35. </DataTemplate>
  36. </ListBox.ItemTemplate>
  37. </ListBox>
  38. <Button Content="绿色" HorizontalAlignment="Left" Margin="82,512,0,0" VerticalAlignment="Top" Height="" Click="Button_Click_1"/>
  39. <Button Content="黄色" HorizontalAlignment="Left" Margin="303,512,0,0" VerticalAlignment="Top" Height="" Click="Button_Click_2"/>
  40. </Grid>
  41. </Grid>
  42.  
  43. </phone:PhoneApplicationPage>

MainPage.xaml.cs

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. using Microsoft.Phone.Controls;
  13.  
  14. namespace 换皮肤WP
  15. {
  16. public partial class MainPage : PhoneApplicationPage
  17. {
  18. //mvvm如果属性放到这里,绑定看构造函数
  19. public List<string> Words { get; set; }
  20.  
  21. // 构造函数
  22. public MainPage()
  23. {
  24. InitializeComponent();
  25.  
  26. ThemeHelper.ChangeTheme();
  27.  
  28. //测试列表里面文字换肤
  29. Words = new List<string>
  30. {
  31. "Hello word",
  32. "Kennie",
  33. "no zuo no die"
  34. };
  35.  
  36. this.DataContext = this;
  37. }
  38.  
  39. private void Button_Click_1(object sender, RoutedEventArgs e)
  40. {
  41. ThemeHelper.ChangeTheme();
  42. }
  43.  
  44. private void Button_Click_2(object sender, RoutedEventArgs e)
  45. {
  46. ThemeHelper.ChangeTheme(ThemeType.Blue);
  47. }
  48. }
  49. }

App引用样式

WP7<ResourceDictionary Source="Style/common.xaml" />

WP8写法不一样,自行去百度,实在不太多人不懂话,代码稍后再贴

下载Demo

windows phone 换肤(2)的更多相关文章

  1. Windows Phone 资源管理与换肤思考

    新入手一台Windows 8的笔记本,安装了VS2013后,终于又可以开发WP了.公司暂时不愿意开发WP,那么咱就自行研究吧! 在没有WP开发环境的时候,曾经在WPF尝试了一下换肤功能的实现.最简单的 ...

  2. Qt编写可换肤的中文双拼汉字输入法

    时间过得真快,不知不觉已到2015年,农历春节一眨眼就过去了,端正状态收拾心情整装待发出发. 曾经有段时间,我有一个很执着的梦想,我要导演出一部空前绝后的巨幕.不过现实无情地碾碎我的梦想,也同时将我推 ...

  3. 基于QT的换肤整体解决方案(QSkinStyle)(提供Linux的XP风格)

    基于QT的换肤整体解决方案(QSkinStyle) 对QT这个成功的跨平台GUI库,本身内置了对换肤功能的实现,比如cleanlooks.plastique等跨平台风格:还有一些是和平台相关的风格,比 ...

  4. C# 实现对窗体(Form)换肤

    http://www.csharpwin.com/csharpresource/2992.shtml 一直想写一个比较完整的.容易扩展的窗体换肤的方案,由于时间问题,都没去实现这个想法.现在有朋友提出 ...

  5. WPF换肤之四:界面设计和代码设计分离

    原文:WPF换肤之四:界面设计和代码设计分离 说起WPF来,除了总所周知的图形处理核心的变化外,和Winform比起来,还有一个巨大的变革,那就是真正意义上做到了界面设计和代码设计的分离.这样可以让美 ...

  6. WPF换肤之五:创建漂亮的窗体

    原文:WPF换肤之五:创建漂亮的窗体 换肤效果 经过了前面四章的讲解,我们终于知道了如何拖拉窗体使之改变大小,也知道了如何处理鼠标事件,同时,也知道了如何利用更好的编写方式来编写一个方便实用和维护的换 ...

  7. WPF换肤之三:WPF中的WndProc

    原文:WPF换肤之三:WPF中的WndProc 在上篇文章中,我有提到过WndProc中可以处理所有经过窗体的事件,但是没有具体的来说怎么可以处理的. 其实,在WPF中,要想利用WndProc来处理所 ...

  8. WPF换肤之二:可拉动的窗体

    原文:WPF换肤之二:可拉动的窗体 让我们接着上一章: WPF换肤之一:创建圆角窗体 来继续. 在这一章,我主要是实现对圆角窗体的拖动,改变大小功能. 拖动自绘窗体的步骤 首先,通过上节的设计,我们知 ...

  9. 浅谈DevExpress<一>:换肤

    最近要用到devExpress,一句话,很好很强大,比起vs自带的winform界面,种类和花样要多了不少,然而,强力的功能带来了庞大的信息量,所以我打算通过一些小模块来和大家一起对它进行探讨和研究. ...

随机推荐

  1. AppCan使用注意问题

    1.文件上传的时候尽量使用uexUploadMsg,然后注意文件名,文件名一定要正确才能传上去.

  2. 【转】 Pro Android学习笔记(九四):AsyncTask(3):ProgressDialog

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Progress Dialog小例子 我们 ...

  3. 小程序App方法

    App() 注册一个小程序 小程序的入口方法 //app.js App({ onLaunch: function(options) { console.log("onLaunch" ...

  4. 一个简单的Python多线程

    首先对一段普通的代码进行测试 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import time def RunThrea ...

  5. js日期date对象

    js日期 日期对象的一些属性和方法 var date = new Date() date.toString() // "Tue Jan 29 2019 22:58:13 GMT+0800 ( ...

  6. C#通用模块专题

    开源 程序设计 常用组件 加载图片,播放音乐.视频,摄像头拍照 文件读写(txt.xml.自定义文件格式(后缀名)) 串口通信 稳定的串口读写:http://blog.csdn.net/kolvin2 ...

  7. Halcon学习之一:查询图像参数

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.get_grayval ( Image : : Row, Column : Grayval ) 计算Image图像中坐标为(Row,Colum ...

  8. Hadoop Serialization(third edition)hadoop序列化详解(最新版) (1)

    初学java的人肯定对java序列化记忆犹新.最开始很多人并不会一下子理解序列化的意义所在.这样子是因为很多人还是对java最底层的特性不是特别理解,当你经验丰富,对java理解更加深刻之后,你就会发 ...

  9. localtime 的性能问题及其替代者

    在系统从redhat5升到redhat6的过程中,服务的性能差了很多.经过定位发现是程序中频繁调用localtime/localtime_r所致. 而调用localtime_r 的实现中,对时区进行了 ...

  10. 在ubuntu中安装minicom时出现devic…

    未正常关闭minicom yesaidu@ywf-ubuntu: ~$ ls /var/lock LCK..ttyS0  subsys yesaidu@ywf-ubuntu: ~$ kill 0 ye ...