Fluent/Ribbon是微软在其最新桌面操作系统Windows 7中使用的图形用户界面。 Windows平台的进化,伴随着系统图形界面的重新设计。从Windows XP到Windows Vista,最大的革新就是Windows Aero的引入。在Windows 7 中,Aero被保留下来。 但是,在未来,Windows 7的图形用户界面将朝着Office 2007相同的方向,名称为Fluent/Ribbon。

现在,我们用WPF作为用户界面开发语言,来做一个简单的实例作为学习的开始。

  • 准备工作:

需要下载第三方组件为:Fluent.dll,下载网址:http://fluent.codeplex.com/

  • 步骤

新建项目,选择项目类型:WPF应用程序

  • 引入Fluent.dll,这里有选择的是支持DotNet 4.0版本(有三个版本,3.5,4.0,4.5)

  • 以XAML模式打开MainWindow.xaml,可以看到WPF应用程序,默认生成的XAML源码:
<Window x:Class="TLAgent.SecurityManager.WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
        Title="MainWindow" Height="350" Width="525">
<Grid> </Grid>
</Window>
  • 把”Window”标记改为”Fluent:RibbonWindow”,改成如下:
<Fluent:RibbonWindow x:Class="TLAgent.SecurityManager.WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
Title="MainWindow" Height="350" Width="525">
<Grid> </Grid>
</Fluent:RibbonWindow>

下一步MainWindow.xaml.cs中修改为:

using Fluent;

namespace TLAgent.SecurityManager.WPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : RibbonWindow//修改为继承RibbonWindow
{
public MainWindow()
{
InitializeComponent();
}
}
}

运行后,窗体效果:

这个窗体目前有三个主题,实例是Silver主题,还有两个主题:Blue和Black,参考如下:

Blue:

Black:

主题配置主要在App.xaml中设置:

<Application x:Class="TLAgent.SecurityManager.WPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<!--主题配置文件-->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Fluent;Component/Themes/Generic.xaml" />
<ResourceDictionary Source="/Fluent;Component/Themes/Office2010/Black.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

但是我们给系统做主题切换一般是通过代码调用接口来实现的,如何设计?

我给这三个主题样式用Enum设计了这三个主题ThemeStyle: Silver,Blue,Black

那么怎样让整个系统应用都用这个主题?

在App.xaml.cs中,重写OnStartup方法,把改变主题的方法放在这个方法中执行即可。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
using TLAgent.WPF.Theme; namespace TLAgent.SecurityManager.WPF
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
ThemeManager.ChangeTheme(ThemeStyle.Silver);
base.OnStartup(e);
}
}
}

在系统的任何地方调用这个这个接口都可以改变主题:

ThemeManager.ChangeTheme(ThemeStyle.Silver);

实例源码

基于WPF系统框架设计(2)-Fluent Ribbon之HelloWorld的更多相关文章

  1. 基于WPF系统框架设计(3)-Fluent Ribbon界面布局

    一个系统框架除了功能菜单导航,有系统内容显示区域,系统状态栏. Silver: Blue: Black: 系统界面设计,就不进行技术细节介绍了,主题以框架设计为主,Xaml源码参考: <Flue ...

  2. 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)

    AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...

  3. 基于WPF系统框架设计(1)-为什么要仿Office2010 Ribbon?

    为什么系统框架设计使用Ribbon导航模式? 这得从Office软件的演变说起.微软为什么最后选择使用Ribbon,也许就是很多系统设计要使用Ribbon做功能导航的原因. 你是否还记得曾经使用过的M ...

  4. 基于WPF系统框架设计(4)-Ribbon整合Avalondock 2.0实现多文档界面设计(一)

    前些时间研究了WPF的一些框架,感觉基于Prism框架的MVVM模式对系统的UI与逻辑分离很好,所以就按照之前Winform的框架设计,用WPF做了一套,感觉比Winform要强很多. MVVM模式和 ...

  5. 基于WPF系统框架设计(6)-整合MVVM框架(Prism)

    应用场景 我们基础的框架已经搭建起来了,现在整合MVVM框架Prism,在ViewModel做一些逻辑处理,真正把界面设计分离出来. 这样方便我们系统开发分工合作,同时提高系统可维护性和灵活性. 具体 ...

  6. 基于WPF系统框架设计(9)-多值绑定之IMultiValueConverter

    应用场景 我想把View层的一个布局控件和功能按钮传到ViewModel层,达到动态变更布局,同时灵活获取功能按钮的属性,让View和ViewModel完全分离,而不受View层影响. 最后我想到使用 ...

  7. 基于WPF系统框架设计(8)-PasswordBox传值到ViewMode

    应用场景 我要做一个系统登录功能,需要传用户名和密码到ViewModel中,可是PasswordBox传值到ViewModel中好像跟TextBox等控件不一样.这里需要用到附加属性. 附加属性:一个 ...

  8. 基于WPF系统框架设计(7)-TextBox/PasswordBox在ViewModel中支持回车命令

    应用场景 我现在做一个系统登录功能,要求在PasswordBox上输完密码后回车,能够响应Enter事件,并执行ViewModel中对应的方法.如果登录成功则隐藏当前窗口显示主窗体,登录失败则焦点返回 ...

  9. 基于WPF系统框架设计(10)-分页控件设计

    背景 最近要求项目组成员开发一个通用的分页组件,要求是这个组件简单易用,通用性,兼容现有框架MVVM模式,可是最后给我提交的成果勉强能够用,却欠少灵活性和框架兼容性. 设计的基本思想 传入数据源,总页 ...

随机推荐

  1. 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest(solved 8/11)

    这套题似乎是省选前做的,一直没来写题解---补上补上>_< 链接:http://codeforces.com/gym/101147 一样先放上惨不忍睹的成绩好了--- Problem A ...

  2. bootstrap3基本了解

    使用 BootCDN 提供的免费 CDN 加速服务(同时支持 http 和 https 协议) Bootstrap 中文网 为 Bootstrap 专门构建了免费的 CDN 加速服务,访问速度更快.加 ...

  3. MyEclipse内安装与使用SVN

    安装教程 http://blog.csdn.net/u014756827/article/details/52288161 使用教程 http://www.cnblogs.com/keyi/p/594 ...

  4. 我对webform的整改。

    对于webfom,一种写法,将所有业务单元封装在一个pagebase里面,所有的页面继承自pagebase这个service外观,这样的结果就是,所有的页面单元上代码量会非常少.最大程度减少耦合,而最 ...

  5. Linux C/C++内存泄漏检测工具:Valgrind

    Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和 ...

  6. Centos7下zabbix部署(三)自定义监控项

    引言 在前面的博客中我们介绍了zabbix自带的模板,并且完成了我们的一些比较常用的监控,现在我们如果想要监控我们磁盘的IO,这时候zabbix并没有给我们提供这么一个模板,所以我们需要自己来创建一个 ...

  7. hdu 1856(hash+启发式并查集)

    More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others) ...

  8. 设置电脑(windows)自动关机的方法

    下面有三种设置方法可以自动关机. 设置一 定时自动关机 假如你需要电脑在20:20自动关机,那么只需要在“开始”菜单中选择“运行”,然后输入at 20:20 Shutdown -s,点击“确定”即可. ...

  9. superviosrd进程管理

    supervisor进程管理器---------------------------1. 安装依赖yum install python-setuptools-devel 2. 安装supervisor ...

  10. outlook preview setup

    ow To Show Subject Above/Below Sender In Mail List In Outlook? Normally in the compact view of a mai ...