【问题标题】:Reset Model to initial state in Catel在 Catel 中将模型重置为初始状态
【发布时间】: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 的新票证,以便我们检查行为。

标签: mvvm catel


【解决方案1】:

ResetModel(nameof(Part)) 应该可以解决问题。

具体实现见https://github.com/catel/catel/blob/develop/src/Catel.MVVM/MVVM/ViewModels/ViewModelBase.cs#L1093

【讨论】:

  • 我已经用更多信息编辑了我的问题。
猜你喜欢
  • 2021-01-15
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2020-02-05
  • 2020-08-31
  • 2013-03-27
相关资源
最近更新 更多