我有一个窗口,其中包含一个嵌套控件 NC1,其中包含 3 个嵌套控件 NC2 的实例。我在 NC1 上有一个“重置”按钮,它应该重置 NC1 和 NC1 中所有三个 NC2 的值。
我已经尝试了几种重置按钮的实现,但都没有成功。在所有情况下,即使数据重置,HasDirtyModel 仍然为真。
我尝试在所有三个 NC2 实例和 ((IEditableObject)nc1).CancelEdit() 上显式调用 ((IEditableObject)nc2).CancelEdit()。虽然这会完全重置,但仅在 NC1 上执行 CancelEdit 不会重置 NC2 模型。(NC1 的视图模型具有 [Model] 和 [Expose("NC2s")] 的属性,它是 NC1 模型中的 List。
调用 CancelViewModel() 也会重置数据,但仍将 HasDirtyModel 设置为 true。
所有模型都派生自 ModelBase。我应该怎么做才能导致 HasDirtyModel 变为假。
此问题与使用 Catel 3.9 的 WPF 应用程序有关