【发布时间】:2014-03-21 19:15:10
【问题描述】:
我有一个带有 Parent 的 Node 对象,我已经像这样绑定在我的 xaml 中,
<Label>
<Hyperlink>
<TextBlock Text="{Binding Path=Node.Parent.Name}"/>
</Hyperlink>
</Label>
我的 ViewModel 看起来像这样
public class NodeViewModel
{
public Node Node { get; set; }
public NodeViewModel(Node model)
{
Node = model;
if(model.Parent != null) { } // Check if it's null, then do nothing.
// When the above line is commented out, my label displays nothing.
}
}
为什么当我的 if 语句被注释掉时,标签/文本块是空白的?难道我做错了什么?在我检查它是否为空之前,我的对象是否既存在又不存在?
编辑:
忘了提一下,我的节点类非常简单,并且确实为 Name 属性实现了INotifyPropertyChanged。
第二次编辑:添加了我的简单节点类。
[ImplementPropertyChanged] // From Fody.PropertyChanged
public class Node
{
public int? ParentID { get; set; }
public Node Parent { get; set; }
public string Name { get; set; }
public Node Node(Node p = null)
{
Parent = p;
}
}
【问题讨论】:
-
贴出
Node类的代码。 -
对象是否被某种实现延迟加载的 ORM(如 NHibernate 或实体框架)代理?
-
@Matthew 实际上是。它由实体框架代理。这可能是问题吗?如果是这样,有没有更简单的方法来解决这个问题?
标签: c# wpf entity-framework fody-propertychanged