【发布时间】:2021-11-28 09:36:58
【问题描述】:
我正在使用带有 WPF 的 Catel MVVM。 我有一个使用 [Model] 属性装饰的模型的 ViewModel。 Model 继承自 ModelBase。
public class PartEditViewModel : ViewModelBase
{
[Model]
[Expose("Number")]
[Expose("Description")]
public Part Part{ get; set; }
...
TextBoxes 绑定到公开的属性以编辑它们。 我想要一个按钮来重置对此模型的更改。 我尝试调用 CancelAsync 来触发此模型的 OnDeserializing,但 ViewModel 中的属性未更新为其原始值。
我怎样才能实现所需的行为?
编辑
我尝试使用ResetModel(nameof(Part), ModelCleanUpMode.CancelEdit);,但没有效果。
我注意到没有在 Part 的实例上调用 PropertyChanged,而只是在 ViewModel 上调用。
这可能是由于使用了 Expose fody 编织。我的猜测是,该属性的更改未注册,因此无法重置。
【问题讨论】:
-
请在 Github/catel/catel 上创建一个带有 repro 的新票证,以便我们检查行为。