我有一个Silverlight ChildWindow。当我点击链接时,它会打开这个子窗口并显示我的ViewModel中的一些数据。问题是,当ViewModel中的数据更新时,这不会更新。
Popup中的示例:
<TextBox Text="{Binding Path=AgentExceptionDetail.Action, Mode=TwoWay}" />
视图模型:
private AgentExceptionDetail _agentExceptionDetail;
public AgentExceptionDetail AgentExceptionDetail
{
get { return _agentExceptionDetail; }
set
{
if (value != _agentExceptionDetail)
{
RaisePropertyChanged("AgentExceptionDetail");
_agentExceptionDetail = value;
}
}
}
通过调用RIA-Services填充此AgentExceptionDetail对象。此调用成功,数据恢复正常。 Binding实际上就像它的Mode = OneTime而不是OneWay,因为当我关闭并重新打开弹出窗口时,数据会显示,但弹出窗口首次打开AgentExceptionDetail = null,在调用回来时填充。
当绑定实际上正在寻找“AgentExceptionDetail.Action”时,这与我为“AgentExceptionDetail”提升属性更改事件有关吗?如果是这样的话呢?
答案 0 :(得分:2)
如果我理解你的描述是正确的,它应该在您的场景中按需运行。但是,我在这里看到一个严重的问题:
if (value != _agentExceptionDetail)
{
RaisePropertyChanged("AgentExceptionDetail");
_agentExceptionDetail = value;
}
您在实际更改任何内容之前发送更改通知!颠倒操作顺序以纠正此错误。
if (value != _agentExceptionDetail)
{
_agentExceptionDetail = value;
RaisePropertyChanged("AgentExceptionDetail");
}