【问题标题】:Window style with WPF Ribbon from Microsoft doesn't match Windows 8 style带有 Microsoft 的 WPF 功能区的窗口样式与 Windows 8 样式不匹配
【发布时间】:2012-09-12 17:57:09
【问题描述】:

我正在使用 Windows 8 和 Visual Studio 2012 的发行版来创建带有功能区控件的 WPF 应用程序。我选择.Net Framework 4.5中WPF自带的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 样式不匹配的丑陋样式的窗口:

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

WPF 的功能区控件不支持新的 Windows 8 样式吗?还是我错过了任何设置?

编辑:

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

但这不是我更改的好起点...

【问题讨论】:

  • 您是否尝试过在 Blend 中手动更新样式?或者您正在寻找一种自动化的方式来做到这一点?
  • 我是 WPF 新手。我只寻找一种在 Windows 8 上以正确方式显示窗口边框并在 Windows 7 上以旧样式显示窗口边框的方法。
  • 我以前从未使用过它,但我猜这可能是不可能的。您可能需要创建一个自定义样式以使其看起来像 Windows 8。当您启动您的应用程序时,您可能会检查操作系统版本和苹果,以选择适合的样式。您需要 Expression Blend 来进行样式设置。
  • 我假设 WPF 正在绘制整个窗口镶边本身。也就是说,它不是原生的Windows Ribbon Framework,所以你得到了一个近似值。对于它的价值,it was a lot more broken in the VS2012 RC。一个相当糟糕的解决方法是使用 Window 而不是 RibbonWindow 并放弃 QAT。
  • @Fox32:.Net 中的 Ribbon 实现基于 Office 2007 样式,而不是 Office 2010 和 Windows 8 中的 Fluent 样式。Microsoft 已决定,如果您想要某些东西,您应该购买 3rd 方功能区看起来不错。

标签: wpf windows-8 ribbon .net-4.5 wpf-4.5


【解决方案1】:

WPF 功能区不是操作系统提供的控件(与大多数 Windows 窗体控件一样)的包装器,而是从头开始构建的,以便在开发时具有功能区的外观和感觉,同时还是与其他 WPF 控件一样灵活的控件(注意对模板部分的支持)。

也就是说,这是控件(当前)未更新以支持 Windows 8 样式的问题。考虑到必须更改的多个控件的模板数量,以及向后兼容的需要(这是我在这一点上的推测),当 .NET 4.5 发布时,它可能被视为不是优先事项。

您也许可以自己更改主题,但这看起来是一项艰巨的任务,因此使用已经实现 Windows 8 功能区样式的第三方控件对您来说可能是值得的。

【讨论】:

  • 值得注意的是 2 件事,(1) 它在 Office 2010/W8 中被称为 Fluent UI 和 (2) Microsoft 员工表示他们认为有足够多的 3rd 方实现不在 .Net 中的功能区上花费大量时间(根据 wpf/ribbon 博客)。
  • 第三方是垃圾(对不起),他们总是崩溃和挂起程序。我们需要一个官方的、可定制的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
相关资源
最近更新 更多