我有一个嵌套控件 (NC1),其中包含 3 个 NC2 实例。首次打开包含视图时,NC1 将为空,因此 NC2 的三个实例将为空。根据通过我的代码和框架进行的调试,这似乎可以正常工作。
当在包含视图中进行选择时,NC1 被正确设置(并且 ViewModel 被(重新)创建)并且其属性的值(通过 Fody.Expose 公开)出现在视图中。但是,NC2 的任何 ViewModel 都没有(重新)创建,它们不反映各自模型提供的值。
如果不上传大量内容,我不确定要提供哪些信息,所以我会尝试一下。
在 NC1 视图中,我有以下内容
<localViews:NC2 DataContext="NC2Entry1"/>
<localViews:NC2 DataContext="NC2Entry2"/>
<localViews:NC2 DataContext="NC2Entry3"/>
NC2EntryX 是 NC1 ViewModel 上的属性,它从列表中返回 NC2 模型的特定实例。NC2EntryX 属性未使用 RegisterProperty 注册。
作为说明,我发现我必须为 NC1 和 NC2 视图模型提供一个空参数构造函数。如果我不这样做,那么当 TypeFactory 尝试使用 Activator 而不是使用注入路径创建 ViewModel 时,我会在创建视图模型时收到 MissingMethod 异常。未使用注入路径,因为 TypeFactory 的第 591 行调用返回 false,因为传递的 NC2 模型“未注册”。(不确定是否应该或如何做到这一点。)
我正在使用 Catel 版本 3.9.0