c# - WPF 组合框样式和触发器不起作用

标签 c# wpf combobox triggers styles

我有一个组合框:

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 enter image description here

谢谢

最佳答案

在我看来,您的问题不是代码隐藏方法,而是错误属性的使用。 即使您使用 XAML,也不会出现您想要/预期的 UI。

ComboBox Background 属性不是您需要的属性。

只是为了说明第一点: 如果您尝试更改前景而不是背景,它会很好地工作并更改文本前景。

但不幸的是,要更改您的 ComboBox 背景或突出显示,您需要更加努力地工作。 这是一个很好的解释: Change-background-of-WPF-Combobox customizing-wpf-combo-box-style

希望对你有帮助

关于c# - WPF 组合框样式和触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764322/

相关文章:

c# - 检查并比较 sql server 表中的列值

c# - 纯粹在 xaml 中连接文字和静态资源字符串

c# - wpf Storyboard死亡

c# - 组合框无法准确获取数据库值

java - JSF 多个组合框问题

Delphi:是否可以有一个包含禁用项目的组合框?

c# - 是否有任何原因无法在此代码块的 List<T> 中找到现有项目?

C# 并非所有代码路径都返回一个值 try catch

c# - CS0103 : The name 'CType' does not exist in the current context

wpf - 访问用户控件的元素