2013-05-20 2 views
0

Я пытался установить серый цвет, чтобы мой текст box.I пытался сделать следующий код, но он бросает исключение, какВыдает исключение, когда я пытаюсь покрасить текстовое поле в 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; 

Оба бросают один и тот же эксепитон.

+0

Где в коде вы пытаетесь установить цвет? Например. конструктор? –

+0

Я пытаюсь установить цвет в xaml.cs, у меня есть условие, если условие выполнено, то я изменяю цвет текстового поля. – Usher

+0

Да, ** где ** в этом файле xaml.cs? –

ответ

2

Элементы XAML создаются во время кода InitializeComponent кода, поэтому, если вы пытаетесь получить доступ к именованному элементу до этого вызова, это будет null.

+0

Спасибо @ John Bowen, я понял, что вы имеете в виду, поэтому я не могу изменить цвет фона до того, как он начнет инициализировать?, Даже я попробовал эту опцию «if (tbHeadline.SelectedText.Trim(). Length! = 0) «его не работает либо – Usher

+0

Если вы помещаете код в конструктор, просто переместите его в значение InitializeComponent. Инициализация элементов управления - это не то же самое, что отображение. Перед тем, как они появятся на экране, возникает множество других шагов, поэтому вы не получите неправильный цвет, а затем меняетесь. –

1

Почему вы не устанавливаете свойство непосредственно в файле разметки XAML? Если вы не хотите делать в XAML файл, я хотел бы предложить (я обычно делаю это так):

  1. В конструкторе настройки обработчика событий для нагруженного события всей страницы или управления
  2. Установите свой начальные значения для контроля внутри обработчика событий

Пример: this.Loaded + = (отправитель, е) => { tbHeadline.Background = Brushes.Gray; }

Смежные вопросы