这篇文章带着我们从头开始创建一个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应用(手动编写)的更多相关文章

  1. ModernUI教程:定义一个Logo

    ModernWindow的标题栏包含了一块区域用来显示自定义的窗体Logo: 这个窗体logo通过ModernWindow.LogoData属性来设置.这个属性是几何类型数据支持Path.Data m ...

  2. ModernUI教程:目录 (完结)

    入门 My first Modern UI app (manually)                         第一个ModernUI应用(手动编写)(已完成) My first Moder ...

  3. ModernUI教程:独立显示器DPI感知

             独立显示器DPI感知,是在Windows 8.1中新增的特性,这个特性针对拥有多个显示器同时各个显示器的DPI设定又不同的人.对这个新特性做了优化支持的软件能够在一个高DPI的显示器 ...

  4. ModernUI教程:创建自定义主题

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

  5. ModernUI教程:如何使用你自己的导航框架

         Modern UI for WPF带有一个内置的页面导航框架,易于使用和可扩展的.但这并不是必须的,你也可以自己来自定义一个导航框架.      默认的ModernWindow控件模板包括标 ...

  6. 手动编写一个简单的loadrunner脚本

    loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...

  7. 性能测试总结工作总结-基于WebService协议脚本 内置函数手动编写

    LoadRunner基于WebService协议脚本 WebService协议脚本有三种生成方式,一种是直接通过LoadRunner导入URL自动解析生成:一种是使用LoadRunner内置函数手动编 ...

  8. [大数据从入门到放弃系列教程]第一个spark分析程序

    [大数据从入门到放弃系列教程]第一个spark分析程序 原文链接:http://www.cnblogs.com/blog5277/p/8580007.html 原文作者:博客园--曲高终和寡 **** ...

  9. NATS_08:NATS客户端Go语言手动编写

    NATS客户端    一个NATS客户端是基于NATS服务端来说既可以是一个生产数据的也可以是消费数据的.生产数据的叫生产者英文为 publishers,消费数据的叫消费者英文为 subscriber ...

随机推荐

  1. Hadoop 文件的数量怎么比block的数量多?

    Total files:    23 Total symlinks:        0 Total blocks (validated):    22 (avg. block size 117723 ...

  2. 探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收

    前言:上一篇文章 只是 RabbitMQ 的科普,本文将仔细分析 Cinder 中 RabbitMQ 的各组件的使用.消息的发送和接收等.由于各流程步骤很多,本文只会使用若干流程图来加以阐述,尽量做到 ...

  3. NOIP2010普及组T4 三国游戏——S.B.S.

    题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...

  4. ZOJ 3232 It's not Floyd Algorithm --强连通分量+Floyd

    题意:给你一个传递闭包的矩阵,mp[u][v] = 1表示u可以到达v,为0代表不可到达,问你至少需要多少条边组成的传递闭包符合这个矩阵给出的关系 分析:考虑一个强连通分量,如果这个分量有n个节点,那 ...

  5. ssm中使用hibernate-validator验证BO

    目前比较流行的验证做法:前端jquery-form-validate + 后端hibernate-validate 在pom中添加相关jar: <!-- use hibernate-valida ...

  6. [3D跑酷] UI事件处理系统

    在我们的Unity游戏项目中,GUI的表现采用NGUI.记录一下我们的处理方式: 需要解决的问题 1.需要处理大量按钮的点击事件 2.需要处理界面跳转事件 3.需要处理界面元素更新事件 解决方案 GU ...

  7. Vernam密码

    Vernam加密法也称一次一密(One-Time-Pad),用随机的非重复的字符集合作为输出密文.这里最重要的是,一旦使用了变换的输入密文,就不再在任何其他消息中使用这个输入密文(因此是一次性的).输 ...

  8. iOS自带地图纠偏问题

    …………纠偏 篇………….. 1. 涉及接口:<CoreLocation/CoreLocation.h> 2. 核心代码解读: if ([CLLocationManager locatio ...

  9. ST3插件——PlainTasks的使用

    今天看到一个有意思的ST3插件,可以进行简单的任务管理. 安装很简单:ctrl + shift + p,输入install回车,再输入plaintasks回车即可. 以下是一些支持的操作,更多的操作请 ...

  10. Window.open()方法参数详解

    Window.open()方法参数详解 1, 最基本的弹出窗口代码   window.open('page.html'); 2, 经过设置后的弹出窗口   window.open('page.html ...