如何更改ComboBox下拉背景?

Map*_*oft 5 xaml combobox colors uwp

我有一个ComboBoxUWP项目,我想修改.我想改变StackPanel包含它的(?)的背景颜色ComboBoxItems,但我还没有找到一种简单的方法.

在这里,我想改变浅灰色填充的颜色.

Combobox打开

围绕的颜色ComboBoxItems应匹配,但它是突出的默认灰色.

这是一个MSN Money的ComboBox自定义填充颜色与之匹配的示例ComboBoxItems.这就是我希望实现的目标.

MSN Money Combobox

我使用"填充"这个词,但它实际上只是包含该元素的元素的颜色ComboBoxItems.

据我了解,我必须修改Windows 10 SDK中提供的generics.xaml文件,但这将修改ComboBox我正在使用的所有es.我可以创建一个继承的自定义控件ComboBox,但是当我想要改变这种颜色时,是否需要我编写一个新的控件?必须有一种更简单的方法来改变它.

@Bart这是我在ComboBox中弹出模板的模板中找到的代码.我不确定你的解释中"SystemControlBackgroundChromeMediumLowBrush"来自哪里.

<Popup x:Name="Popup">
    <Border x:Name="PopupBorder"
        Background="{ThemeResource ComboBoxDropDownBackground}"
        BorderBrush="{ThemeResource ComboBoxDropDownBorderBrush}"
        BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}"
Run Code Online (Sandbox Code Playgroud)

Bar*_*art 3

您永远不应该触摸 SDK 文件夹中的 generics.xaml 文件,它是一个“系统文件”。这就像更改 Windows 安装深处的某些文件来更改图标资源管理器(并且可能会导致其他应用程序也更改它)。

有多种解决方案:

您要查找的代码段是模板中的 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">
Run Code Online (Sandbox Code Playgroud)
  • 覆盖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>
Run Code Online (Sandbox Code Playgroud)