当我尝试在WPF中为文本框着色时引发异常

时间:2013-05-20 05:06:59

标签: wpf

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

“对象引用未设置为对象的实例。”

因为文本框值为null但我希望文本框为灰色,而不管存在或不存在的值。

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

 <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;

两者都抛出相同的例外。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

    实施例:     this.Loaded + =(发件人,e)=&gt; {     tbHeadline.Background = Brushes.Gray;     }