Xaml 如何更改组合框下拉列表背景?

Xaml 如何更改组合框下拉列表背景?,xaml,colors,combobox,uwp,Xaml,Colors,Combobox,Uwp,我想修改UWP项目中的组合框。我想更改包含ComboBoxItems的StackPanel(?)的背景色,但我还没有找到一种简单的方法 在这里,我想改变浅灰色填充的颜色 ComboBoxItems周围的颜色应该匹配,但突出的是默认的灰色 下面是一个例子,MSN Money的ComboBox有一个定制的填充颜色来匹配ComboBoxItems。这就是我希望实现的目标 我使用“padding”一词,但它实际上只是包含ComboBoxItems的元素的颜色 据我所知,我必须修改Windows 10

我想修改UWP项目中的
组合框。我想更改包含
ComboBoxItems
StackPanel
(?)的背景色,但我还没有找到一种简单的方法

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

ComboBoxItems
周围的颜色应该匹配,但突出的是默认的灰色

下面是一个例子,MSN Money的
ComboBox
有一个定制的填充颜色来匹配
ComboBoxItems
。这就是我希望实现的目标

我使用“padding”一词,但它实际上只是包含
ComboBoxItems
的元素的颜色

据我所知,我必须修改Windows 10 SDK中提供的generics.xaml文件,但这将修改我正在使用的所有组合框。我可以创建一个从
ComboBox
继承的自定义控件,但这不需要我在想要更改此颜色时编写一个新控件吗?必须有更简单的方法来改变这一点

@Bart这是我在组合框弹出窗口的模板中找到的代码。我不知道“SystemControlBackgroundChromeMediumLowBrush”是从哪里来的

<Popup x:Name="Popup">
    <Border x:Name="PopupBorder"
        Background="{ThemeResource ComboBoxDropDownBackground}"
        BorderBrush="{ThemeResource ComboBoxDropDownBorderBrush}"
        BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}"


千万不要触摸SDK文件夹中的generics.xaml文件,它是一个“系统文件”。这就像在Windows安装中更改某些文件以更改图标资源管理器(也可能导致其他应用程序更改此图标)

有多种解决方案:

  • 在您自己的应用程序中(使用Visual Studio,混合或简单地复制)。如果您让它未命名(通过设置
    x:Key
    命名模板),它将应用于您所有的
    组合框
    。如果您只想更改一些,则应给它一个键并将其用作
    静态资源
您正在寻找的代码片段是模板中的弹出控件

<Popup x:Name="Popup">
    <Border
        x:Name="PopupBorder"
        Background="{ThemeResource SystemControlBackgroundChromeMediumLowBrush}"
        BorderBrush="{ThemeResource SystemControlForegroundChromeHighBrush}"
        BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}"
        Margin="0,-1,0,-1"
        HorizontalAlignment="Stretch">

第二个解决方案直到我意识到App.xaml有一行手动设置RequestedTheme为Light时才起作用,我立即删除了该行。我尝试创建了一个模板,但这对我的控件没有任何影响。至于xaml的第一块,你是从哪里复制的?xaml的第一个chunck来自默认模板(答案中链接)。若要使用自己创建的模板,请阅读答案中的链接,因为这应该会起作用(使用key+StaticResource或为应用程序中的所有控件重新定义默认模板)。但我很高兴您至少以第二种方式使其起作用。
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Dark">
                <SolidColorBrush x:Key="SystemControlBackgroundChromeMediumLowBrush" Color="DarkGray" />
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>