如何在代码中使用模板更改元素的背景?

时间:2012-08-02 21:11:27

标签: c# wpf templates

所以我在表单中有一个TextBox,其中Template已应用于它(它对所有文本框都是全局的)。我想要的是更改某些文本框的背景颜色,具体取决于其中是否有无效的条目。但我需要将更改仅应用于一个特定的文本框(因此我无法更改模板)

从代码中,我希望能够说:

tb.Background = (SolidColorBrush)FindResource("myColor");

当我这样做时,没有任何反应,我只是假设这是因为有一个模板应用于TextBox tb

有没有办法在不为自定义Template / Style进行错误输入的情况下执行此操作? (我需要为多个控件重复此过程,我不想要这么多样式/模板)。

2 个答案:

答案 0 :(得分:0)

您可以使用两种方法。 方法#1

textBox1.Background = Brushes.Blue;
textBox1.Foreground = Brushes.Yellow;

方法#2

我认为你在xaml中创建TextBox?在这种情况下,您需要为文本框命名。然后在后面的代码中,您可以使用各种画笔设置Background属性。最简单的是SolidColorBrush:

myTextBox.Background = new SolidColorBrush(Colors.White);

答案 1 :(得分:0)

如果没有看到您的模板,很难说,但如果您的代码不起作用,请确保您的模板具有以下功能:

Background="{TemplateBinding Background}"

如果没有此功能,则无法从模板外部设置背景。