我遇到使用组合框获取自定义属性集的问题。我正在使用.Net 4.0,WPF和xaml资源,用于在字典中设置的类型和在app.xaml中设置的一些画笔。我可以使用周围的“边框”技巧找到漂亮的圆角,找到我的组合框的渐变和布局。但是我似乎无法让组合框中的“选定项目”具有除暗灰色之外的背景。我宁愿将其更改为透明并继承父边框的渐变。但是我错过了这样做的财产或关系。
有没有人知道如何在xaml中执行此操作?
图像:
代码:
词典项目:
<Style TargetType="{x:Type Border}">
<Setter Property="Background" Value="{StaticResource MoneyBrush}" />
<Setter Property="BorderBrush" Value="#071C07" />
<Setter Property="BorderThickness" Value="3" />
<Setter Property="CornerRadius" Value="20" />
<Setter Property="SnapsToDevicePixels" Value="True" />
</Style>
刷入主App.xaml:
<LinearGradientBrush x:Key="MoneyBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#3A883A" Offset="1" />
<GradientStop Color="#FFFFFF" Offset="0" />
<GradientStop Color="#FF53AA75" Offset="0.50" />
<GradientStop Color="#073307" Offset="0.95" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="FontBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="#107810" Offset="0.50" />
<GradientStop Color="Black" Offset="0.65" />
</LinearGradientBrush>
主窗口中的实际项目:
<Border Margin="5" >
<ComboBox Height="30" Width="170" Margin="10" x:Name="combopersons"
FontSize="20"
ItemsSource="{Binding Path=People}"
DisplayMemberPath="FirstName"
SelectedValuePath="PersonId"
SelectedValue="{Binding Path=CurrentUser}"
Foreground="{StaticResource FontBrush}">
</ComboBox>
</Border>
编辑&gt;&gt;&gt;
我喜欢@iltzortz提出的解决方案,但我想要一个渐变,所以在这种情况下这会更好:
<ComboBox.Resources>
<LinearGradientBrush x:Key="{x:Static SystemColors.WindowBrushKey}" >
<GradientStop Color="#3A883A" Offset="1" />
<GradientStop Color="#FFFFFF" Offset="0" />
<GradientStop Color="#FF53AA75" Offset="0.50" />
<GradientStop Color="#073307" Offset="0.95" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" >
<GradientStop Color="#000000" Offset="1" />
<GradientStop Color="#FFFFFF" Offset="0" />
</LinearGradientBrush>
</ComboBox.Resources>
编辑2&gt;&gt;&gt;
出于某种原因,这只适用于我在Visual Studio 2012和Windows 7上使用.NET 4.0或更高版本构建的应用程序。当我尝试在家中运行代码时出于某种原因 它不会渲染我相信这是由于Windows 8或Visual Studio 2010为不同的系统值解释不同的颜色。如果您使用的是Windows 8或Visual Studio 2010,请注意这一点,因为它对我来说适用于一个环境而不是另一个环境......好奇。
答案 0 :(得分:1)
以下代码似乎可以完成这项工作
<Grid Background="Pink">
<ComboBox Margin="10,0" Width="100" Height="40">
<ComboBoxItem>1</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>3</ComboBoxItem>
<ComboBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Green" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green" />
</ComboBox.Resources>
</ComboBox>
<TextBox VerticalAlignment="Top" Margin="10"/>
</Grid>