Silverlight DataBinding到对象的属性

时间:2011-01-18 11:12:00

标签: silverlight xaml data-binding silverlight-4.0 viewmodel

我有一个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”提升属性更改事件有关吗?如果是这样的话呢?

1 个答案:

答案 0 :(得分:2)

如果我理解你的描述是正确的,它应该在您的场景中按需运行。但是,我在这里看到一个严重的问题:

    if (value != _agentExceptionDetail)
    {
      RaisePropertyChanged("AgentExceptionDetail");
      _agentExceptionDetail = value;
    }

您在实际更改任何内容之前发送更改通知!颠倒操作顺序以纠正此错误。

    if (value != _agentExceptionDetail)
    {
      _agentExceptionDetail = value;
      RaisePropertyChanged("AgentExceptionDetail");
    }