在我的程序中,我允许用户添加到绑定到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(" ");
答案 0 :(得分:0)
一种可能的解决方案是使用属性而不是支持字段。这将控制可以返回哪种输出并消除NullReferenceException
。
默认情况下,将属性更改为空。
public string NodeName
{
get { return _nodeName ?? string.Empty; }
set
{
_nodeName = value;
NotifyPropertyChange(() => NodeName);
}
}
然后更改ViewModel以使用属性:
hasSpace = NodeName.Contains(" ");