我有一个下拉列表:
var cmbLogin = new ComboBox()
{
Width = 200,
Height = 50,
Margin = new Thickness(20),
HorizontalContentAlignment = HorizontalAlignment.Center,
Background = Brushes.Transparent,
Foreground = Brushes.White,
Focusable = true,
};
cmbLogin.Items.Add("AAAAA");
cmbLogin.Items.Add("BBBBB");
现在我想定义样式和触发器:
Style cmbStyle = new Style(typeof(ComboBox));
cmbStyle.Setters.Add(new Setter(BackgroundProperty, Brushes.Green));
cmbStyle.Setters.Add(new Setter(ForegroundProperty, Brushes.Red));
Trigger t1 = new Trigger { Property = ComboBox.IsMouseOverProperty, Value = true };
t1.Setters.Add( new Setter(ComboBox.BackgroundProperty, Brushes.Yellow));
cmbStyle.Triggers.Add(t1);
cmbLogin.Style = cmbStyle;
但是,无论是否使用鼠标,效果始终与之前相同。
![enter image description here](https://istack.dev59.com/Hw199.webp)
![enter image description here](https://istack.dev59.com/7r7lG.webp)
Style
,但是在与默认的ControlTemplate
相关联时使用它。相对于控件模板,Triggers
和Setters
正确地工作。要么你也定义自己的自定义ControlTemplate
,要么遵循默认的ControlTemplate
。你不能两者兼得。 - jsanalytics