0

我试图为我的文本框设置灰色。我试图执行以下代码,但它抛出异常

“你调用的对象是空的。”

因为文本框值为空,但我希望文本框为灰色,而不管值是否存在。

这是我用来实现这个概念的代码..

 <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.Foreground = Brushes.Gray;

我也尝试了以下代码

tbHeadline.Background = Brushes.Gray;

两者都抛出相同的异常。

4

2 回答 2

2

XAML 元素是在代码隐藏的InitializeComponent方法期间创建的,因此如果您在调用之前尝试访问命名元素,它将是null.

于 2013-05-20T05:34:50.583 回答
1

为什么不直接在 XAML 标记文件中设置属性?如果你不想在 XAML 文件中做,我会建议(我通常这样做):

  1. 在构造函数中,为整个页面或控件的Loaded事件设置事件处理程序
  2. 在事件处理程序中设置初始值以进行控制

示例:this.Loaded += (sender, e) => { tbHeadline.Background = Brushes.Gray; }

于 2013-05-20T08:18:47.377 回答