ModernUI教程:创建自定义主题
Modern UI WPF包括两个内置主题(dark与light)。在1.0.3版本,您可以构建自定义的主题。Modern UI应用程序通常有在全局资源字典App.xaml中有如下定义:

“/FirstFloor.ModernUI;component/Assets/ModernUI.xaml”字典包含了核心WPF控件(Button钮,TextBlock、ListBox框等)的Modern UI风格。第二个字典包含画笔和其他资源的定义。如果你想使用一个自定义主题,你需要用自己的版本替换第二个字典。
创建一个新的主题:
下面的步骤描述了如何创建一个新的主题。
1)确保您已经为Visual Studio 2012安装了最新的Modern UI for WPF模板扩展。
2)创建一个新的或打开一个已存在的Modern UI项目
3)给您的项目中添加Assets文件件
4)向Assets文件夹添加一个新项。在添加新项对话框中导航到“Visual c#项目>Modern UI for WPF”,并选择Modern UI主题。将文件重命名为ModernUI.MyTheme并选择添加dd。
5)打开App.xaml和替换当前主题为新主题;

6)编译并运行这个项目。您的应用程序会展示如下图类似的新主题;

自定义主题:
自定义主题通常是派生dark或light的主题。从一个内置主题的派生出来的主题会自动包含所需的所有资源。所以你需要做的就是覆盖这些资源,或者你可以选择不覆盖内置的主题资源,但这需要你提供新的主题资源。
派生一个内置的主题很简单,参考dark或者light主题添加一个MergedDictionary 引用;
通过添加以下brush资源到你自定义的主题,所有按钮将变成红色的背景:

通过添加以下brush资源到你自定义的主题,所有按钮将变成红色的背景:

请参阅主题资源引用中的主题所需的所有资源的完整概述。
传送门:ModernUI教程:目录
ModernUI教程:创建自定义主题的更多相关文章
- Kendo UI for jQuery使用教程——创建自定义捆绑包
[Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support ...
- Laravel 门面实例教程 —— 创建自定义 Facades 类
我们首先创建一个需要绑定到服务容器的Test类: <?php namespace App\Facades; class Test { public function doSomething() ...
- 创建自定义 jQuery 移动主题
自定义页面.工具栏.内容.表单元素.列表.按钮等元素的外观 智能电话和平板设备的高采用率最终导致增加了对移动 Web 开发人员和设计师的需求.jQuery Mobile 框架支持您创建能与原生应用程序 ...
- ModernUI教程:目录 (完结)
入门 My first Modern UI app (manually) 第一个ModernUI应用(手动编写)(已完成) My first Moder ...
- ExtJS4.2.1自定义主题(theme)样式详解
(基于Ext JS 4.2.1版本) UI组件 学习ExtJS就是学习组件的使用.ExtJS4对框架进行了重构,其中最重要的就是形成了一个结构及层次分明的组件体系,由这些组件形成了Ext的控件. Ex ...
- Material使用05 自定义主题、黑夜模式\白天模式切换
需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...
- 演练Ext JS 4.2自定义主题
本文将根据API文档中关于主题的介绍做的一次演练,以便熟悉自定义主题的过程. 练习环境: Sencha Cmd v4.0.1.45 Ruby 1.9.3-p392 firefox 26 首先,使用以下 ...
- 【Android】8.3 自定义主题
分类:C#.Android.VS2015: 创建日期:2016-02-17 一.简介 在Android系统中,除了内置的主题外,开发人员还可以自定义主题.一般通过在Resources/value文件夹 ...
- Material使用06 自定义主题、黑夜模式\白天模式切换
需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...
随机推荐
- HTML5 获取地理位置信息
HTML5增加的新功能,获取地理位置信息,如果浏览器支持且设备有定位功能,就能够直接使用这组API来获取当前信息位置.该Geolocation API可以应用于移动设备中的地理位置. Geolocat ...
- 【高级功能】使用canvas元素(第一部分)
1. 开始使用 canvas 元素 canvas 元素非常简单,这是指它所有的功能都体现在一个JavaScript对象上,因此该元素本身只有两个属性:width 和 height. canvas 元素 ...
- infopath重复表格无法保存输入内容
现象: infopath重复表格无法保存文本输入内容,可以保存日期控件输入内容 原因: 在重复表中添加格式类型规则导致无法保存.
- iOS通讯录整合,兼容iOS789写法,附demo
苹果的通讯录功能在iOS7,iOS8,iOS9 都有着一定的不同,iOS7和8用的是 <AddressBookUI/AddressBookUI.h> ,但是两个系统版本的代理方法有一些变化 ...
- iOS 中常用的对密码进行MD5加密
iOS中MD5加密 标签(空格分隔): iOS MD5 + (NSString *)MD5:(NSString *)str { const char *cStr = [str UTF8String]; ...
- IOS开发基础知识--碎片4
十七:返回到主线程进行操作,对UI进行更新只能在主线程进行 /*将数据显示到UI控件,注意只能在主线程中更新UI, 另外performSelectorOnMainThread方法是NSObject的分 ...
- RoboGuice 3.0 (三)总结篇
经过前两篇的介绍,我们了解了如何使用RoboGuice方便的为我们注入需要的对象,这篇将着重说明原理. 一.Guice与RoboGuice Guise是Google开发的一个轻量级的依赖注入框架,主要 ...
- 教你开发asp.net的单点登录系统
单点登录系统,简称SSO.以下是我花了几个小时写的一个简单实现.特把实现思路和大家分享. 背景:某项目使用ASP.NET MemberShip来做会员系统,需要同时登录多个系统.而项目的开发人员无法在 ...
- JDBC-Oracle
例子: publicclassTestJdbc { public static void main(String[] args)throwsException { //程序入口,并抛出异常 Class ...
- linux快速删除海量文件
首先创建一个临时目录: /rubbish rsync --delete-before -a -H -v --progress --stats /rubbish /111 /111为目的目录 选项说明: ...