微软的WPF Ribbon风格与Windows 8风格不匹配。

20
我使用Windows 8和Visual Studio 2012的正式版本创建了一个带有Ribbon控件的WPF应用程序。我选择了在.NET Framework 4.5中带有WPF的Ribbon控件。 创建Ribbon的代码:
<RibbonWindow
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfExperiments" x:Class="WpfExperiments.MainWindow"
    Title="MainWindow" Height="350" Width="525" Icon="Test.ico">
<Ribbon>        
    <Ribbon.ApplicationMenu>
        <RibbonApplicationMenu>
            <RibbonApplicationMenuItem Header="Item 1"></RibbonApplicationMenuItem>
        </RibbonApplicationMenu>
    </Ribbon.ApplicationMenu>
    <Ribbon.QuickAccessToolBar>
        <RibbonQuickAccessToolBar>
            <RibbonButton SmallImageSource="Test.ico" Label="Test"></RibbonButton>
        </RibbonQuickAccessToolBar>
    </Ribbon.QuickAccessToolBar>
</Ribbon>

但问题在于它生成了一个丑陋的窗口风格,与Windows 8的风格不符:

My Ribbon

将它与资源管理器中的功能区进行比较。 窗口标题居中(并具有不同的颜色),窗口的边框大小也不同。 功能区的样式不同,但如果我具有与 MS Word 相同的功能区样式(在 Windows 8 中正确显示),我会感到满意。

Explorer Ribbon in Windows 8

WPF的功能区控件是否不支持新的Windows 8样式?或者我错过了某些设置吗?

编辑:

我开始在 Blend (4.0,我没有5.0的访问权限)中编辑模板。 在修复了一些编译错误之后(似乎是 Blend 中的错误),我可以运行应用程序,但它看起来像这样:

enter image description here

但那不是我改变的好起点...


你尝试过在Blend中手动更新样式吗?还是你正在寻找一种自动化的方法来完成它? - Neil Kennedy
@Fox32 我知道一些 Microsoft.Expression 的东西可以在 Expression Blend SDK 中找到,但我不确定那个程序集/命名空间是否存在。 - ta.speot.is
2
@Fox32:.Net中的Ribbon实现基于Office 2007风格,而不是Office 2010和Windows 8中的Fluent风格。微软已经决定,如果你想要看起来不错的东西,就应该购买第三方的Ribbon。 - user7116
应该注意的是,C++版本实际上使用了本地的缎带样式。 - user23127
另外,http://windowsribbon.codeplex.com/ 支持在 Windows Forms 中使用本地 Ribbon,如果您想使用 C# 并使用 Ribbon,则可以使用它。 - user23127
显示剩余6条评论
1个回答

2
WPF Ribbon不是操作系统提供的控件的包装器(就像大多数Windows Forms控件一样),而是从头开始构建,以在开发时具有缎带的外观和感觉,同时作为其他WPF控件一样灵活的控件(请注意支持模板部分)。
也就是说,目前该控件尚未更新以支持Windows 8样式。考虑到需要更改多个控件的多个模板以及向后兼容性的需求(这是我此时的猜测),当.NET 4.5发布时可能被视为不是优先事项。
您可能能够自行更改主题,但这看起来是一项艰巨的任务,因此对于您来说,使用已实现Windows 8缎带样式的第三方控件可能是值得的。

需要注意两点,(1)在Office 2010/W8中,它被称为Fluent UI;(2)微软员工表示,他们认为已经有足够的第三方实现,不需要在.Net中花费大量时间来处理功能区(根据wpf/ribbon博客)。 - user7116
6
第三方的那些东西很烂(抱歉),它们总是会导致程序崩溃和卡顿。我们需要一个官方的、可定制的工具。 - SE13013

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接