gpt4 book ai didi

wpf - Mahapps.Metro 单控件更改主题

转载 作者:行者123 更新时间:2023-12-04 18:42:13 30 4
gpt4 key购买 nike

有没有办法在 mahapps 地铁中根据每个控件更改主题(亮/暗)?
我的问题是,我有一个使用 Light 主题的窗口,但我有一部分的背景非常暗,我无法让 ComboBox 正确显示,即使我更改了背景颜色为黑色,前景为白色。
我找到了关于在控制模板周围使用一些非常严重的技巧来改变那个箭头的引用,但到目前为止运气并不好......
为了使事情变得更复杂,组合框位于列表框的项目模板中。

我在别处有一个弹出按钮,我意识到它具有完全正确的组合框样式,因为它使用的是深色主题。这就是为什么我问是否有一种简单的方法可以在单个控件下切换主题?

谢谢!

最佳答案

不确定我是否正确地回答了这个问题,所以你想要你的 ComboBox当父控件使用浅色主题时使用深色主题?

如果是这样,那就很简单了。在其资源中的控件范围内添加 DarkTheme 资源。

所以说我们得到了

 <Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
...
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

现在,您的应用程序中的几乎所有内容都将使用浅色主题。但是,如果我们有 ComboBox定义如:
<ListBox>
<!-- This is just for an example so you would ofc have this defined in the ItemTemplate normally -->
<ListBoxItem>
<ComboBox>
<ComboBox.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
</ComboBox.Resources>
<ComboBoxItem Content="A" />
<ComboBoxItem Content="A" />
<ComboBoxItem Content="A" />
</ComboBox>
</ListBoxItem>
<ListBoxItem Content="A" />
<ListBoxItem Content="A" />
</ListBox>

现在我们添加 BaseDark.xaml ComboBox 范围内的资源这应该只是让它应用黑暗主题。

enter image description here

这样做的原因只是由于一些 Brush魔术 :) 控件都使用它们查询和查找的画笔进行样式化。现在,当多个画笔具有相同名称时,具有最高范围优先级的资源优先。

所以本质上 BaseLight.xamlBaseDark.xaml两者都定义了具有不同颜色的相同画笔。

基于应用于控件的资源最终定义了该控件或其子控件获得的主题。

关于wpf - Mahapps.Metro 单控件更改主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520798/

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