2013-09-18 4 views
0

В моей программе я разрешаю пользователю добавлять в Сбор данных привязку к TreeView. Когда пользователь создает новый узел, им разрешено назначать ему имя. Пользователь записывает имя узла в textBox, расположенном во всплывающем окне. Текст из текстового поля привязан к свойству в ViewModel.NullReferenceException on String Свойство

Однако я не могу получить свойство или string в ViewModel, чтобы прочитать значение, к которому оно привязано. Он просто появляется в отладчике как null, который возникает, когда я получаю исключение. Я создал другие окна именно так, но по какой-то причине этот не хочет работать.

XAML:

<TextBox Text="{Binding TransName}" MaxHeight="20" MinHeight="20" Height="20" Margin="142,24,12,40" Name="textBox1" TextChanged="textBox1_TextChanged"></TextBox> 

В Вид модели:

private string _nodeName; 

//Property for Node Name 
public string NodeName 
{ 
    get { return _nodeName; } 
    set 
    { 
     _nodeName = value; 
     NotifyPropertyChange(() => NodeName); 
    } 
} 

Еще в View Model, это линия, в которой происходит исключение

//hasSpace is a boolean 
hasSpace = _nodeName.Contains(" "); 
+0

'_nodeName' является нулевым конечно. –

+0

Я знаю, но почему? Я печатаю значение –

ответ

1

Одним из возможных решений заключается в том, чтобы использовать свойство вместо поля поддержки. Это будет контролировать, какой выход можно вернуть и устранить NullReferenceException.

Изменение свойства для возврата пустым по умолчанию.

public string NodeName 
{ 
    get { return _nodeName ?? string.Empty; } 
    set 
    { 
     _nodeName = value; 
     NotifyPropertyChange(() => NodeName); 
    } 
} 

Затем измените ViewModel использовать свойство:

hasSpace = NodeName.Contains(" "); 
+0

Это работало чуваком, спасибо большое. Интересно, почему я только должен был сделать это на этот раз. –

+0

Я рад, что вы сочли это полезным! Устранение того, что может вызвать «null», уменьшит частоту этих ошибок. – Romoku