【发布时间】: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