当前位置: 首页 > news >正文

Microsoft Ribbon for WPF 正式发布

  之前写过几篇关于WPF4 中开发Ribbon 工具栏的文章,其中利用的是WPF Ribbon Control 控件库,开发出类似Office 2007 样式的Ribbon 工具栏。当然CodePlex 也提供了Fluent Ribbon Control Suite 项目可以写出Office 2010 样式的工具栏应用程序。8月2日微软正式发布了Microsoft Ribbon for WPF,该Ribbon 控件是100%完全属于的WPF 工具,并支持WPF3.5 SP1 以及WPF4。

下载安装

     首先下载 MSI 安装程序。Microsoft Ribbon for WPF Source and Samples.msi 程序包括一些源码及实例,安装后VS2010 版的项目开发包MicrosoftRibbonForWPFSourceAndSamples.zip 会释放在C:\Program Files\Microsoft Ribbon for WPF\v3.5.40729.1 目录中。

     Microsoft Ribbon for WPF.msi 程序就是我们真正需要的东西,程序安装后打开VS2010 新建项目,在Windows 模板中可以看到"WPF Ribbon Application" 的选项。

InstallDone

NewVSProject

VS2010 演示

新建项目后,一个默认Ribbon 模型已经为我们编写好了。

RibbonVs

看看XAML 代码,与原来用过的WPF Ribbon Control 也无太多差异。

<ribbon:RibbonWindow x:Class="WpfRibbonApplicationVS2010.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;
assembly=RibbonControlsLibrary"
Title="MainWindow" x:Name="RibbonWindow" Width="640" Height="480"> <Grid x:Name="LayoutRoot"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ribbon:Ribbon x:Name="Ribbon"> <ribbon:Ribbon.ApplicationMenu> <ribbon:RibbonApplicationMenu SmallImageSource="Images\SmallIcon.png"> <ribbon:RibbonApplicationMenuItem Header="Hello _Ribbon" x:Name="MenuItem1" ImageSource="Images\LargeIcon.png"/> </ribbon:RibbonApplicationMenu> </ribbon:Ribbon.ApplicationMenu> <ribbon:RibbonTab x:Name="HomeTab" Header="Home"> <ribbon:RibbonGroup x:Name="Group1" Header="Group1"> <ribbon:RibbonButton x:Name="Button1" LargeImageSource="Images\LargeIcon.png" Label="Button1" /> <ribbon:RibbonButton x:Name="Button2" SmallImageSource="Images\SmallIcon.png" Label="Button2" /> <ribbon:RibbonButton x:Name="Button3" SmallImageSource="Images\SmallIcon.png" Label="Button3" /> <ribbon:RibbonButton x:Name="Button4" SmallImageSource="Images\SmallIcon.png" Label="Button4" /> </ribbon:RibbonGroup> </ribbon:RibbonTab> </ribbon:Ribbon> </Grid> </ribbon:RibbonWindow>

Blend4 演示

     更令人兴奋的是该Ribbon 库同样支持Blend4,这样可以更方便的设计Ribbon 工具栏样式。打开Blend4 新建项目也能看到"WPF Ribbon Application"的选项。

NewBDProject

在控件库里也有不少的Ribbon 控件供大家使用。

Controls

在当前项目基础上,拖拽一个RibbonTab 进来,并将Tab 命名为"MyTab"。

AddTab 

MyTab

在设计窗口调整MyTab 区域范围。

TabArea

Tab 标签设计完成后,继续在MyTab 中添加MyGroup 组,为了设计方便先将Home 标签隐藏。

MyGroup

调整MyGroup 区域范围。

GroupArea

在MyGroup 中添加RibbonButton 和RibbonCheckBox 控件,并为RibbonButton 设置一个Small 图标。

BtnIcon

AddControls

接下来为添加RibbonButton 和RibbonCheckBox 一些简单的事件。

private void ribbonButton_Click(object sender, RoutedEventArgs e)
{
    // TODO: Add event handler implementation here.
    MessageBox.Show("Button Clicked.");
}

Clicked

private void RibbonCheckBox_Checked(object sender, RoutedEventArgs e)
{
    // TODO: Add event handler implementation here.
    MessageBox.Show("Checked.");
}

Checked

private void RibbonCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    // TODO: Add event handler implementation here.
    MessageBox.Show("UnChecked.");
}

UnChecked

     通过上面的简单的演示,本次微软发布的Ribbon  for WPF 的确为我们开发Ribbon 工具栏省了不少事,不必为繁琐的嵌套XAML 代码发愁了。感兴趣的朋友可以阅读MicrosoftRibbonForWPFSourceAndSamples.zip 中的源代码学习更为复杂的Ribbon 工具栏。

Ribbon

Menu

相关参考

1. Ribbon for WPF

2. WPF 4 Ribbon 开发 之 快捷工具栏(Quick Access Toolbar)

3. WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)

4. WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)





本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2010/08/04/microsoft-ribbon-for-wpf-rtm.html,如需转载请自行联系原作者

相关文章:

  • 【原创】简单的局域网内无线文件传输(1)
  • 给初学者:JavaScript 中数组操作注意点
  • 阿里研究院崔瀚文:“单身经济”背后的“新家园”
  • 在Hyper-V下Linux不能使用鼠标
  • 005——VUE中的v-text与v-html的使用
  • 控制反转IOC与依赖注入DI
  • 开源免费接口管理平台 eoLinker V3.1.7发布+开源版部署指南一份
  • Android ListView A~Z快速索引(改进版)
  • AFNetworking 源码阅读
  • 利用JQuery制作自定义Alert Box
  • Windows Server 2003域环境搭建
  • 简单学习Less基础用法
  • 让Eclipse使用jQuery的插件-spket/ jQueryWTP/ Aptana
  • 简单的Slony-I设置实例 II
  • Ubuntu环境搭建svn服务器
  • 网络传输文件的问题
  • es6
  • Spark RDD学习: aggregate函数
  • SpringBoot 实战 (三) | 配置文件详解
  • vuex 学习笔记 01
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 缓存与缓冲
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 京东美团研发面经
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前端_面试
  • 探索 JS 中的模块化
  • 微信小程序实战练习(仿五洲到家微信版)
  • 小程序 setData 学问多
  • 协程
  • 做一名精致的JavaScripter 01:JavaScript简介
  • Prometheus VS InfluxDB
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (TOJ2804)Even? Odd?
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (过滤器)Filter和(监听器)listener
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转载)(官方)UE4--图像编程----着色器开发
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core 连接数据库,通过数据库生成Modell
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET大文件上传知识整理
  • .Net小白的大学四年,内含面经
  • .NET性能优化(文摘)
  • //解决validator验证插件多个name相同只验证第一的问题
  • @Import注解详解
  • @Transactional 详解
  • [Android] 240204批量生成联系人,短信,通话记录的APK