如何停止从Style继承并更改文本框的背景颜色

时间:2013-05-21 00:45:58

标签: wpf

再次坚持改变我的文本框的背景颜色,但奇怪的部分是forground工作正常但不是背景。

这是我的xaml

 <TextBox
                Name="tbHeadline" 
                Text="{Binding SelectedStory.Headline, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{StaticResource ErrorTemplate}" 
                Grid.Column="1"  
                Grid.Row="6" 
                TextWrapping="NoWrap" 
                d:LayoutOverrides="Height" 
                Grid.ColumnSpan="2" 
                HorizontalAlignment="Stretch" 
                LostFocus="tbHeadline_LostFocus" 
                 />

在我的Xaml.cs

我有以下代码

 tbHeadline.Background = Brushes.Gray; //this not working
 tbHeadline.Foreground = Brushes.Gray; //this is working

这是示例输出

Foreground output Background Output 谢谢你的帮助。

从专家评论更新

好的,我在网格中添加了一个文本框,这就是它的样子

<TextBox Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="10" Grid.RowSpan="2" Height="23" HorizontalAlignment="Left" Margin="50,14,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Background="#E6000000" />

即使我将背景颜色设置为黑色,但在运行应用程序时它不可见。

4 个答案:

答案 0 :(得分:3)

您的代码段应该有效。您可以通过创建空白项目,删除TextBox并在代码中设置颜色来进行测试。使用Snoop查看tb的背景是以不同的方式设置还是以不同的方式设置。

答案 1 :(得分:3)

在总结我们在Chat中的讨论时,您有一个覆盖TextBox背景画笔的默认样式。我建议您将TextBox的默认样式设置为Null作为此SO question suggests的答案。您可以在TextBox的Code Behind或Xaml声明中执行此操作。

tbHeadline.Style = null;

或在您的Xaml中

<TextBox Name="tbHeadline" Style="" 
         Text="{Binding SelectedStory.Headline, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" 
         Validation.ErrorTemplate="{StaticResource ErrorTemplate}" 
         Grid.Column="1"  
         Grid.Row="6" 
         TextWrapping="NoWrap" 
         d:LayoutOverrides="Height" 
         Grid.ColumnSpan="2" 
         HorizontalAlignment="Stretch" 
         LostFocus="tbHeadline_LostFocus" />

答案 2 :(得分:2)

您的代码段应该有效。只需将样式设置为null,就像这样

<TextBox Style ={x:Null} Grid.Column="1" Grid.ColumnSpan="3" Grid.Row="10" Grid.RowSpan="2"         Height="23" HorizontalAlignment="Left" Margin="50,14,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Background="#E6000000" />

答案 3 :(得分:0)

尝试tbHeadline.Background = new SolidColorBrush(Colors.Gray);