gpt4 book ai didi

c# - 如何将纯色设置为整个菜单的背景?

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:05 25 4
gpt4 key购买 nike

如何修改我的菜单,使其始终显示颜色,而不是像这样:

alt text

这是我的代码:

<DockPanel>
<Menu DockPanel.Dock="Right"
Height="30"
VerticalAlignment="Top"
Background="#2E404B"
BorderThickness="2.6"
Foreground="#FFAA00">
<Menu.BitmapEffect>
<DropShadowBitmapEffect Direction="270" ShadowDepth="3" Color="#2B3841"/>
</Menu.BitmapEffect>

<MenuItem Header="File" >
<MenuItem Header="New Build" Background="#2E404B"></MenuItem>
<Separator />
<MenuItem Header="Exit" Background="#2E404B"></MenuItem>
</MenuItem>

<MenuItem Header="Edit" >
<MenuItem Header="Language" Background="#2E404B"></MenuItem>
<MenuItem Header="Display Mode" Background="#2E404B"></MenuItem>
<Separator />
<MenuItem Header="Settings" Background="#2E404B"></MenuItem>
</MenuItem>

<MenuItem Header="View" >

</MenuItem>
<MenuItem Header="About" >

</MenuItem>
</Menu>
</DockPanel>

此外,我意识到我正在设置 MenuItem 的所有实例中的颜色,如果有人可以向我展示一种更有效的方法,那也太棒了。 :D

最佳答案

困难在于您需要的颜色深埋在 Menu 主题样式中。这些主题样式是 WPF 附带的主题样式中最复杂的一些。它们由 10-20 种样式和模板组成。

一般来说,我建议创建类似于 itowlson 答案中的样式的样式,因为它允许您优雅地适应当前的 Windows 主题,只替换您想要不同的属性和模板,而让其他一切保持不变。

在您的情况下,通过添加单独的标签来零碎地覆盖主题样式很可能是徒劳的。幸运的是您不需要这样做

显然,您实际上是在尝试从用户体验的角度创建自己的自定义主题,那么为什么不在代码中创建自己的主题呢?您可以通过从 Aero 或 Luna 复制主题(根据您的喜好)并更改您想要的任何内容以获得您想要的外观,从而轻松做到这一点。

这对于 Expression Blend 来说非常简单。只是:

  1. 创建一个空窗口并向其中添加一个菜单。
  2. 右键单击菜单,然后选择 Edit Control Parts (Template) > Edit a Copy...
  3. 在对话框中,选择Apply to All并点击Resource dictionary旁边的New
  4. 输入新的ResourceDictionary文件名,例如“MyMenuTheme.xaml”
  5. 在您的 App.xaml 中,使用 MergedDictionaries 将 MyMenuTheme.xaml 包含到您的应用程序资源中

现在您可以对 MyMenuTheme.xaml 进行任何更改,以影响应用程序中所有菜单的外观。该文件将有数百行长,但通常很容易找到要更改的正确设置。在您的情况下,它将是背景设置的各种默认值。

请注意,如果您没有 Expression Blend,您也可以从使用反射器和 BAMLViewer 开始获取主题样式,但这需要更多工作,因为您必须手动选择所需的样式和其他资源。

关于c# - 如何将纯色设置为整个菜单的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com