如何自定义WPF功能区4.5(样式,模板等)

Ale*_*aum 8 c# wpf templates styles ribbon

我尝试从.Net Framework 4.5自定义System.Windows.Controls.Ribbon,因此它可以与Expression Dark主题一起使用(深色,如Blend的默认主题).我尝试过以下想法,但直到现在还没有任何进展:

  • 更改功能区的背景:将仅更改主色,但保留所有其他光泽颜色,突出显示colos等.
  • 更改样式和模板:我找不到Ribbon 4.5的任何默认模板.我试图通过像ShowMeTheTemplate这样的工具来获取它们,但似乎它们使用了一些内部类.
  • 使用Blend for VS2012自定义模板:我总是收到错误"复制模板失败".
  • 使用RibbonControlLibrary中的.net 4功能区:RibbonWindow在Windows 8中看起来很丑(参见WPF RibbonWindow + Windows 8 - 控制框看起来很糟糕),我无法解决

任何帮助将不胜感激,欢迎所有建议.

And*_*ler 6

我可以使用“ 向我显示模板”提取一个可以正常工作的模板。为此,我对其进行了修改,以从“ System.Windows.Controls.Ribbon”(而不是主框架程序集)中提取模板。

它给了我以下内容:

https://gist.github.com/drayde/75526b570a266f5f8f38(太长,无法在此处粘贴)

只需将其添加到您的资源中,然后像这样使用它:

    <Ribbon Template="{StaticResource ribbonTemplate}">
       ...
    </Ribbon>
Run Code Online (Sandbox Code Playgroud)

通过修改模板,您应该完全控制功能区的显示方式。


And*_*ler 5

您可以通过在功能区上设置属性来更改几种颜色:

<ribbon:Ribbon x:Name="Ribbon"
                  Background="Khaki"
                  BorderBrush="Brown"
                  MouseOverBackground="LightCoral"
                  MouseOverBorderBrush="Coral"
                  PressedBackground="LightGreen"
                  PressedBorderBrush="Green"
                  CheckedBackground="LightBlue"
                  CheckedBorderBrush="Blue"
                  FocusedBackground="LightSlateGray"
                  FocusedBorderBrush="SlateBlue">
Run Code Online (Sandbox Code Playgroud)

不完全是一个好看的例子,但展示了如何做到这一点。

也会对如何进行完整的重新造型感兴趣......