String属性的NullReferenceException

时间:2013-09-18 18:11:23

标签: c# wpf string data-binding nullreferenceexception

在我的程序中,我允许用户添加到绑定到TreeView的数据收集。当用户创建新节点时,可以为其分配名称。用户将节点名称写入弹出窗口中的textBox。文本框中的文本绑定到ViewModel中的属性。

但是,我似乎无法获取ViewModel中的属性或string来读取它绑定的值。它只是在调试器中显示为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);
     }
}

仍然在视图模型中,这是发生异常的行

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

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用属性而不是支持字段。这将控制可以返回哪种输出并消除NullReferenceException

默认情况下,将属性更改为空。

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

然后更改ViewModel以使用属性:

hasSpace = NodeName.Contains(" ");