如何在我的应用程序中放置功能区UI元素?

时间:2014-09-03 18:36:28

标签: winforms windows-ribbon-framework

我正在创建一个winform应用程序,并认为它从Ribbon UI元素中获益匪浅。 可以在我自己的应用程序上放一个功能区吗?如果是,怎么做?

我希望不要依赖Delphi这样的第三方工具,因为我的应用程序很快会在未来(或者甚至是当前版本)的Windows版本中看起来过时。我知道这是因为我正在查看Creating Ribbon Styled Applications,并注意到它仍然看起来像Office 2007,即使它与使用Office 2010视觉风格的Windows 7中的写字板进行比较,可能是在同一台机器上。即使是现在,MS Windows 8应用程序在Explorer,WordPad,Paint等中使用Office 2013样式,我也看不到任何支持该视觉风格的Delphi证据,或者它会使其风格适应旧平台,如必要时Vista。对不起,如果这太挑剔了,但我更愿意为我的用户提供他们习惯的体验,而不是我自己或未来的体验。

2 个答案:

答案 0 :(得分:1)

我不确定您如何定义"第三方工具",但此code project使用a library on codeplex,它非常支持Office 10和Office 13风格。

以下是一些有趣的屏幕截图(来自codeplex官方网站的副本):

2007

2007

2010

2010

2013

2013

答案 1 :(得分:1)

如果您打算为用户提供大多数原生外观"感觉",您应该坚持使用Windows功能区框架。这是因为Microsoft使用此API以及他们的"默认" Windows功能区应用程序(MS Word,MS Paint)。这种"原生"的优势实施是(因此该清单并未声称详尽无遗):

  • 看起来感觉操作系统的方向。这意味着您的功能区应用程序看起来与Windows 7和8上的MS Paint和MS Wordpad完全相同。这样,应用程序的功能区也将直接从Microsoft在未来的Windows更新中提供给Windows功能区框架的改进/补丁中获益,当然还有Windows版本。

  • 无需其他软件(Windows Vista / Server 2008除外,它要求平台更新支持Windows功能区框架)。

  • COM API,因此可以将功能区GUI集成到支持COM编程的Windows上的任何编程语言的应用程序(.NET,C ++,Delphi等)。

Microsoft还提供了其他一些功能区实现(所以在提及您的描述时是第一方),但所有这些实现都是针对特定软件(Office Ribbons)或平台(WPF Ribbons)实现的,或者仅仅是过时的( MFC色带)。 Office Ribbons不适合您,因为这些仅限于Microsoft Office应用程序。 MFC色带也是基于COM的,因此理论上可以使用它们。但正如所说,它们已经过时,因此您的应用程序看起来像Office 2007后代。 WPF绝对是一个选项,如:

  • 组件非常强大,WPF组件也在积极更新/维护。

  • 从开发人员的角度来看,它们更容易集成到应用程序中,因为有大量的文档,并且组件得到了常见的IDE(如Visual Studio)的良好支持。

  • 安装了.NET框架后,Ribbons甚至可以用于"过时的"操作系统,如Windows XP。如果您仍然需要支持Windows XP / 2003,那么您应该牢记这一点。

但正如所说的,这些与微软用于"默认"的组件不同。功能区应用程序,因此与Windows Ribbon Framwork相比,它们总是看起来有点不同。

因此,如果您决定坚持使用Windows功能区框架,您现在可以决定是否选择了#34; hardcore"并自行实现required interfaces,或者您可以使用现有的包装器,例如" Windows Ribbon for WinForms"或者" Windows Ribbon Framework for Delphi"。请将Delphi称为第三方工具"。我想那是因为你看到Ribbon components that are provided by Embarcadero(德尔福出版商)。这是正确的,这些都是过时的,看起来像狗屎,不再积极维护(和马车,...)。所以不要使用它们。而是直接使用Windows功能区框架。我上面提到的包装器就是这样做的,它只是大大简化了开发过程,因为它实现了所有必需的接口,附带了设计器和一些示例应用程序。

如果您想使用其他编程语言,这也不是问题。我之前首先提到Delphi的原因只是因为你在原帖中写了一下,包装器非常好。如上所述,您也可以使用任何其他支持COM API编程的编程。

我希望这让事情变得更加清晰。 [并且对那些来到这里的人感到荣幸! )]

PS:我没有提到实际的第三方实施,例如DevExpress或TMS的实施,因为你想要坚持使用Microsoft实现。