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 ...
随机推荐
- nyoj 712 探 寻 宝 藏--最小费用最大流
问题 D: 探 寻 宝 藏 时间限制: 1 Sec 内存限制: 128 MB 题目描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫内处处有 ...
- 动手学习TCP:TCP连接建立与终止
TCP是一个面向连接的协议,任何一方在发送数据之前,都必须先在双方之间建立一条连接.所以,本文就主要看看TCP连接的建立和终止. 在开始介绍TCP连接之前,先来看看TCP数据包的首部,首部里面有很多重 ...
- [转]Cordova + Ionic in Visual Studio - 101 Tutorial [Part I]
本文转自:http://binarylies.ghost.io/cordova-ionic-in-visual-studio/ Hi everyone, I thought about lending ...
- Ajax与用户交互的存储格式JSON
数据存储是JavaScript的核心功能,这是一个在学习前期的一个容易让人迷惑的问题.它并不是那种像页面滑动.幻灯片展示.淡入淡出等吸引人眼球的特效.适当的存放好数据,就有利于我们组织起结构,又能使应 ...
- 用pygame学习初级python(一) 15.4.19
最近有计划要学一下python,主要是要用flask.django一些框架进行后端的学习工作,但是在web应用之前希望进行一些基础的项目进行一些语法的练习,熟悉一下写法, 这个时候我就想先做几个小游戏 ...
- Openstack-Ceilometer-SNMP的使用
1. 物理服务器配置 1.1安装 #yum install -y net-snmp net-snmp-utils 1.2 配置 复制[附件]中snmpd.conf文件到/etc/snmp/目 ...
- 【ASP.NET 进阶】定时执行任务实现 (定时读取和修改txt文件数字内容,无刷新显示结果)
现在有很多网站或系统需要在服务端定时做某件事情,如每天早上8点半清理数据库中的无效数据等等,Demo 具体实现步骤如下: 0.先看解决方案截图 1.创建ASP.NET项目TimedTask,然后新建一 ...
- tarjan算法求割点cojs 8
tarjan求割点:cojs 8. 备用交换机 ★★ 输入文件:gd.in 输出文件:gd.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] n个城市之间有通讯网 ...
- div中的内容垂直居中的五种方法
一.行高(line-height)法 如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line-height:3 ...
- Jenkins遇到问题一:jenkins配置权限不对导致无法登陆或者空白页面解决办法
找到.jenkins/config.xml文件:替换为:1.<authorizationStrategy class="hudson.security.AuthorizationStr ...