Map*_*oft 5 xaml combobox colors uwp
我有一个ComboBox
UWP项目,我想修改.我想改变StackPanel
包含它的(?)的背景颜色ComboBoxItems
,但我还没有找到一种简单的方法.
在这里,我想改变浅灰色填充的颜色.
围绕的颜色ComboBoxItems
应匹配,但它是突出的默认灰色.
这是一个MSN Money的ComboBox
自定义填充颜色与之匹配的示例ComboBoxItems
.这就是我希望实现的目标.
我使用"填充"这个词,但它实际上只是包含该元素的元素的颜色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)
您永远不应该触摸 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">
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)