ModernUI教程:第一个ModernUI应用(手动编写)
这篇文章带着我们从头开始创建一个Modern UI应用。有关采用项目模板和项模板创建Modern UI应用请参看 第一个ModernUI应用(采用项目模板)。
1:获取最新的ModernUI发布并解压到磁盘,或者通过Nuget安装Modern.WPF包。
2:打开Visual Studio并创建一个WPF应用项目。
3:添加对FirstFloor.ModernUI.dll的引用(如果是WPF4项目,你需要额外引用Microsoft.Windows.Shell.dll)。
4:更改MainWindow使其继承自ModernWindow.
打开MainWindow.xaml,添加ModernUI的xmlns声明,用mui:ModernWindow替换Window元素,如下所示:

打开MainWindow.xaml.cs,添加ModernUI的using引用,替换Window基类为ModernWindow,如下所示:

5:打开App.xaml并添加如下的资源字典引用。

为浅色主题选择ModernUI.Light.xaml,为深色主题选择ModernUI.Dark.xaml。不要同时应用这两个主题。
重要提示:如果你使用的是WPF4.0版本的ModernUI,你需要在工作区添加一个空的矩形样式(style),这是一个bug,如下所示:
在WPF4.5中不需要如此。

6:编译运行应用,你可以看到如下打开的窗体:

7:返回MainWindow.xaml,移除<Grid></Grid>内容。
重要提示:ModernWindow.Content属性将被忽略,所有页面都是通过页面链接呈现内容。
8:让我们定义一个主菜单,添加如下的菜单链接组:

9:编译运行应用,你将看到如下窗体:

10:让我们添加一些实际的内容。添加一个名称为Page1的WPF用户控件
11:打开Page1.xaml并添加如下内容:

ContentRoot风格确保内容能够显示在屏幕的正确位置。
12:回到MainWindow.xaml修改第一个链接让它能够链接到Page1.xaml:

13:另外给ModernWindow添加一个ContentSource属性指向Page1.xaml。

ContentSource定义了一个在开始时被加载的页面,在上面这段代码中,“/Page1.xaml”将在应用启动时被加载。
14:编译并运行应用,你可以看到如下窗体:

以上便是该文章的全部。现在你可以在你的应用添加其他的组和链接到MenuLinkGroups并把他们指向各个页面。更多的内容请参看其他章节。
ModernUI教程:第一个ModernUI应用(手动编写)的更多相关文章
- ModernUI教程:定义一个Logo
ModernWindow的标题栏包含了一块区域用来显示自定义的窗体Logo: 这个窗体logo通过ModernWindow.LogoData属性来设置.这个属性是几何类型数据支持Path.Data m ...
- ModernUI教程:目录 (完结)
入门 My first Modern UI app (manually) 第一个ModernUI应用(手动编写)(已完成) My first Moder ...
- ModernUI教程:独立显示器DPI感知
独立显示器DPI感知,是在Windows 8.1中新增的特性,这个特性针对拥有多个显示器同时各个显示器的DPI设定又不同的人.对这个新特性做了优化支持的软件能够在一个高DPI的显示器 ...
- ModernUI教程:创建自定义主题
Modern UI WPF包括两个内置主题(dark与light).在1.0.3版本,您可以构建自定义的主题.Modern UI应用程序通常有在全局资源字典App.xaml中有如下定义 ...
- ModernUI教程:如何使用你自己的导航框架
Modern UI for WPF带有一个内置的页面导航框架,易于使用和可扩展的.但这并不是必须的,你也可以自己来自定义一个导航框架. 默认的ModernWindow控件模板包括标 ...
- 手动编写一个简单的loadrunner脚本
loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...
- 性能测试总结工作总结-基于WebService协议脚本 内置函数手动编写
LoadRunner基于WebService协议脚本 WebService协议脚本有三种生成方式,一种是直接通过LoadRunner导入URL自动解析生成:一种是使用LoadRunner内置函数手动编 ...
- [大数据从入门到放弃系列教程]第一个spark分析程序
[大数据从入门到放弃系列教程]第一个spark分析程序 原文链接:http://www.cnblogs.com/blog5277/p/8580007.html 原文作者:博客园--曲高终和寡 **** ...
- NATS_08:NATS客户端Go语言手动编写
NATS客户端 一个NATS客户端是基于NATS服务端来说既可以是一个生产数据的也可以是消费数据的.生产数据的叫生产者英文为 publishers,消费数据的叫消费者英文为 subscriber ...
随机推荐
- 烂泥:KVM使用裸设备配置虚拟机
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 何谓裸设备?百度百科显示: 裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊块设备文件 ...
- Provides PHP completions for Sublime Text
来源:https://packagecontrol.io/packages/PHP%20Completions%20Kit php-completions php-completions plugin ...
- 简答哈希实现 (nyoj 138 找球号2)
例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...
- Linux 环境下如何使 Chrome 浏览器字体更漂亮
Windows 就免谈了,本身字体渲染技术 Cleartype 以及 DirectWrite 就稀烂得一塌糊涂.Mac 下面本来字体渲染就很好,所以关键就是在 Linux 下如何使 Chrome 的字 ...
- pyhon之Tkinter实例化学习
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用. 作为实践, 用Tkinter ...
- 【温故而知新-Javascript】窗口效果 (全屏显示窗口、定时关闭窗口)
1.全屏显示窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- NP完全问题 NP-Completeness
原创翻译加学习笔记,方便国人学习算法知识! 原文链接http://www.geeksforgeeks.org/np-completeness-set-1/ 我们已经找到很多很高效的算法来解决很难得问题 ...
- [ZZ]Sign Up for the First-Ever Appium Roadshow on August 20th in New York City
http://sauceio.com/index.php/2014/07/appium-roadshow-nyc/?utm_source=feedly&utm_reader=feedly&am ...
- ubuntu手贱改了sudoers权限之后的恢复
sudo 这个命令是ubuntu系统是用的最多的(和其他大众版linux系统比起来),而一个普通用户是否有sudo权限来临时切换到root用户来执行“一行”命令取决于 /etc/sudoers的配置, ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署
前面几篇陆续介绍了zabbix3.0.3监控系统的部署和监控项配置,今天这里分享下zabbix3.0.3的邮件报警的配置过程~由于采用sendmail发送邮件,常常会被认为是垃圾邮件被拒,所以不推荐这 ...