0

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

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

1 回答 1

0

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

将属性更改为默认返回空。

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

然后更改 ViewModel 以使用该属性:

hasSpace = NodeName.Contains(" ");
于 2013-09-18T18:24:04.153 回答