这篇文章带着我们从头开始创建一个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. java常用开发工具类之 图片水印,文字水印,缩放,补白工具类

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  2. uname

    uname uname用于打印操作系统和硬件架构相关的信息,对于可能在多个系统或架构上运行的Shell脚本程序很有用, 缺省选项相当于 -s 或--system $uname [-amnrsvpio] ...

  3. 在MVC3中使用code first生成数据局库并操作数据库

    1.建立Users和UserInfos两个实体类 对应的是数据库中的表 public class User { //类名+Id(User+Id)组成的字符串在数据库表中会设置该字段是主键且是按1的增量 ...

  4. python strip() lstrip() rstrip() 使用方法

    Python中的strip用于去除字符串的首尾字符串,同理,lstrip用于去除最左边的字符,rstrip用于去除最右边的字符. 这三个函数都可传入一个参数,指定要去除的首尾字符. 需要注意的是,传入 ...

  5. C#与MATLAB之间传递参数

    本文转载自http://www.cr173.com/html/10249_1.html MWNumericArray是MWArray和c#中数据的中间类,怎么用?怎样在C参数? a.double型.i ...

  6. linux进程间通信-XSI IPC

    一 什么是XSI IPC     有三种 IPC我们称作XSI IPC,即消息队列.信号量以及共享存储器(共享内存),它们之间有很多相似之处. 二 标识符和键     每个内核中的 IPC结构(消息队 ...

  7. 同时屏蔽ios和android下点击元素时出现的阴影

    在ios4+和android2+系统,当手指触摸屏幕a标签链接或按钮时,会产生不同的效果,对于ios点击元素的时候,就会出现一个半透明的灰色背景:对于android则出现红色的边框.对这2个系统自带的 ...

  8. Dictionary(HashMap)的实现

    什么是哈希表? 哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构.也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放 ...

  9. 如何解决inline-block元素的空白间距

    早上在博客中有人提了这样一个问题:“li元素inline-block横向排列,出现了未知间隙”,我相信大家在写页面的时候都遇到过这样的情况吧. 我一般遇到这情况都会把li浮动起来,这样就没有间隙.但是 ...

  10. UVA 11983 Weird Advertisement --线段树求矩形问题

    题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和. 解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt] ...