我想在UWP项目中修改ComboBox
。我想更改包含StackPanel
的{{1}}(?)的背景颜色,但我还没有找到一种简单的方法。
在这里,我想改变浅灰色填充的颜色。
ComboBoxItems
周围的颜色应匹配,但它是突出的默认灰色。
以下是MSN Money的ComboBoxItems
具有与ComboBox
匹配的自定义填充颜色的示例。这就是我希望实现的目标。
我使用“填充”一词,但它实际上只是包含ComboBoxItems
的元素的颜色。
据我了解,我必须修改Windows 10 SDK中提供的generics.xaml文件,但这将修改我正在使用的所有ComboBoxItems
es。我可以创建一个继承自ComboBox
的自定义控件,但是每当我想要更改此颜色时,是否需要我编写一个新控件?必须有一种更简单的方法来改变它。
@Bart这是我在ComboBox中弹出模板的模板中找到的代码。我不确定你的解释中“SystemControlBackgroundChromeMediumLowBrush”来自哪里。
ComboBox
答案 0 :(得分:3)
您永远不应该触摸SDK文件夹中的generics.xaml文件,该文件是"系统文件"。这就像更改Windows安装中的某些文件以更改图标浏览器(并可能导致其他应用程序也更改此设置)。
有多种解决方案:
x:Key
命名模板),它将被应用对于你的所有ComboBox
es。如果你只想要更改一些,你应该给它一个密钥并将其用作StaticResource
。您要查找的代码是模板中的Popup控件。
<Popup x:Name="Popup">
<Border
x:Name="PopupBorder"
Background="{ThemeResource SystemControlBackgroundChromeMediumLowBrush}"
BorderBrush="{ThemeResource SystemControlForegroundChromeHighBrush}"
BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}"
Margin="0,-1,0,-1"
HorizontalAlignment="Stretch">
ThemeResource
以获得另一种颜色。请注意,这会对使用相同ThemeResource
的应用中的其他控件产生影响。但这仍然比更改generics.xaml要好得多,而且比重新定义模板要少。这是通过重新定义资源键来完成的。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumLowBrush" Color="DarkGray" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Application.Resources>