如何知道在Catel中初始化所有子视图模型的时间?

时间:2014-10-01 22:18:35

标签: catel

查看Catel中可用的最新覆盖(v4的build 508),我找不到GetChildViewModels()方法返回视图中的子视图模型的覆盖。当我开始更新我的子视图绑定的依赖项属性时,我需要确定所有的子模型都已加载。现在我有一个问题,我的嵌套控件不会显示它们绑定的数据,直到您开始在接口上选择随后触发依赖项属性的新更改的内容。我已经验证父视图中的属性确实具有正确的数据,问题(我认为)是嵌套控件(子视图)尚未加载,因此嵌套视图显示空网格。

我在一个嵌套视图中有一个树,在另一个嵌套视图中有一个列表。父视图包含它们,并具有两个子视图绑定的属性。加载父视图时,树视图会自动加载最后选择的节点。这有效。选择节点后,将发送一条消息,通知所有其他组件,他们应该对所选节点执行任何操作。父组件响应此消息并更新另一个子视图绑定的列表。我已检查并且列表正在更新,但子视图未显示数据。只有当我单击另一个节点时,其他子视图才会开始显示其列表中的项目。我能想到的唯一可能导致这种情况的是,如果父组件执行其更改时其他子视图尚未完全绑定。

我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

问题是4.0中这个偷偷摸摸的小变化: https://catelproject.atlassian.net/wiki/display/CTL/Mapping+properties+from+view+to+view+model

  

从4.0开始,Catel不再自动订阅依赖项属性

我需要添加:

static MyView()
{
    typeof(MyView).AutoDetectViewPropertiesToSubscribe();
}

到我的xaml.cs文件中,了解它们以前的工作方式。