从ComboBox的模板在ComboBoxItem上设置样式

我正在为WPF中的一些ComboBox控件做一个模板。 但是我想在这个模板中设置ComboBoxItems的样式。 我只发现了如何从创建控件的位置应用Style,而不是从ComboBox的模板中应用Style。

我正在使用的模板来自这里: http : //msdn.microsoft.com/en-us/library/ms752094.aspx

但是ComboBoxItem样式(在底部找到)适用于所有ComboBoxItems(由于x:Key="{x:Type ComboBoxItem}"

您应该交换msdn示例的样式定义

  

以下一个

  

然后以下列方式明确地将样式分配给combobox

  

x:关键指令

x:Key的属性值可以是XamlName语法中定义的任何字符串,也可以是通过标记扩展名评估的对象。

在msdn示例中定义样式的方式说明了如何覆盖combobox的默认样式,显式指定样式使用字符串而不是标记扩展来指定ComboBox资源中的样式。

编辑

对于ComboBoxItems样式应该这样做,所以交换代码

  

与代码

  

并且还在ComboBox样式的代码中添加以下指令

  

这是一个简短的示例,说明如何在同一窗口中使用样式化的combobox和另一个具有默认样式的combobox。

XAML

    #FFE8EDF9 #FFC5CBF9 #FF7381F9 #FFE8EDF9 #FFC5CBF9 #FF888888 #FFC5CBF9 #FFDDDDDD White #FF7381F9 #FF211AA9 #FF3843C4 #FF211AA9 #FF444444 sc#1, 0.004391443, 0.002428215, 0.242281124  #FFCCCCCC #FF888888 #FF444444 #FF888888 #FF444444 #FFAAAAAA #FF888888 Black  #FFC5CBF9 Black #FFC5CBF9 #FF3843C4                                                                                                          

C#背后

 using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfComboTemplate { ///  /// Logica di interazione per MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new ObservableCollection() {"Hello", "ComboBox"}; } } } 

使用默认样式的combobox进行的场景拍摄 默认ComboBox

带有风格combobox的sceenshot 风格的ComboBox