20

我正在使用 Windows 8 和 Visual Studio 2012 的发布版本来创建带有功能区控件的 WPF 应用程序。我选择 .Net Framework 4.5 中 WPF 自带的功能区控件。

我创建功能区的代码:

<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 中正确显示),我会很满意。

Windows 8 中的资源管理器功能区

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

编辑:

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

在此处输入图像描述

但这不是我改变的一个好的起点......

4

1 回答 1

2

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

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

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

于 2012-09-30T22:22:32.840 回答