c# - 以编程方式更改 WPF 可编辑组合框的背景颜色

标签 c# wpf combobox

我正在尝试使用代码在运行时动态更改可编辑的 ComboBox 的背景颜色。特别是,我想更改作为 ComboBox 一部分的可编辑 TextBox 的背景。

SO 上有几个关于这个的答案,比如这个:

WPF change the background color of an edittable combobox in code

但是,问题在于它们都基于 XAML 并编辑默认模板。我不想那样做,我正在寻找一种仅适用于代码的通用解决方案。

这可能吗?我尝试了看起来很明显的解决方案:

TextBox textBox = (TextBox)comboBox.Template.FindName("PART_EditableTextBox", comboBox);
textBox.Background = Brushes.Yellow;

但这绝对没有任何作用。我错过了什么?

最佳答案

你可以这样做

<ComboBox Loaded="MyCombo_OnLoaded"  x:Name="myCombo" IsEditable="True"></ComboBox>

private void MyCombo_OnLoaded(object sender, RoutedEventArgs e)
{
      var textbox = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo);
      if (textbox!= null)
      {
           var parent = (Border)textbox.Parent;
           parent.Background = Brushes.Yellow;
       }
}

关于c# - 以编程方式更改 WPF 可编辑组合框的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177619/

相关文章:

c# - 在 try..catch 中获取异常对象以包含完整的堆栈跟踪,目前它已被截断

c# - 为什么断点条件执行失败?

c# - 判断位图是否全黑的有效方法是什么?

c# - 在 WPF 应用程序中绑定(bind)可为 null 的日期时间

c# - 按多列对 C# 列表进行排序

c# - 在 WPF 中的组合框顶部有一个可单击的按钮

c# - 绑定(bind)命令未执行

wpf - 如何在 ListView 的组标题中保存 IsExpanded 状态 - Take 2

javascript - 如何通过 JavaScript 创建 Telerik MVC 组合框

wpf - 如何将复选框项目拉伸(stretch)到组合框的整个宽度