2

再次坚持要更改我的文本框的背景颜色,但奇怪的部分是前景可以正常工作,但不是背景。

这是我的xml

 <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

这是示例输出

前台输出 后台输出 谢谢你的帮助。

来自专家评论的更新

Okie,我在网格中添加了一个文本框,它看起来像这样

<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

4 回答 4

3

您的代码片段应该可以工作。您可以通过创建一个空白项目、删除一个 TextBox 并在代码中设置颜色来进行测试。使用 Snoop 查看 tb 的背景是否以不同的方式或不同的位置设置。

于 2013-05-21T01:12:51.443 回答
3

总结我们在 Chat 中的讨论,您有一个默认样式,它覆盖了您的 TextBox 的背景画笔。我建议您将 TextBox 的 Default Style 设置为 Null,正如这个SO question 的答案所建议的那样。您可以在代码隐藏或 TextBox 的 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" />
于 2013-05-21T06:34:50.333 回答
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" />
于 2013-05-21T06:02:13.893 回答
0

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

于 2013-05-21T05:25:10.293 回答