Catel 使用 IEditableObject
Catel using IEditableObject
我正在测试 Catel MVVM,我想使用已实现的 IEditableObject
。我有一些问题,但我发现的 documentation 在这一点上不是很详细。
有人有帮助吗 link,我必须如何设置它或它如何工作,或类似的东西?或者我真的应该看看源代码,以获得这些要点并感受一下 catel 是如何工作的。
我得到的问题是:
- 方法
SaveViewModelAsync()
的具体作用是什么?
- 它在哪里保存数据,或者我可以在哪里配置它?
- 如何将它与
Orc.EntityFramework6
一起使用,或者我需要手动使用它吗?
SaveViewModelAsync()
和 SaveAsync()
有什么区别?
CancelViewModelAsync()
和 CancelAsync()
有什么区别?
我只能取消一次编辑。如果我再次编辑相同的 ViewModel,则取消不再有效。
我认为在第一次取消后只缺少一个 BeginEdit()
,就像 documentation 建议的那样。这里有一些关于这一点的信息:
- 我编辑了 ViewModel 并且模型设置了新值
- 我执行了
CancelViewModelAsync()
,Model中的setter没有被触及
- 我编辑了 ViewModel,模型设置了新值。当前值为原值
- 我执行
CancelViewModelAsync()
,什么都没发生
- 我编辑了 ViewModel,模型设置了新值。当前值是步骤 3 中编辑的值,如视图显示
感谢帮助
一个问题中有很多问题,但会尝试回答它们:
Q1) SaveViewModelAsync()
方法到底是做什么的
它在所有支持它的模型上调用 IEditableObject.EndEdit
(并装饰有 ModelAttribute
Q2) 数据保存在哪里,或者我可以在哪里配置?
它只是批准对模型的更改,它不会 "save" 任何东西。因此,例如,如果您使用的是 Catel 模型,它将提交 VM 所做的更改。如果您取消,它会将模型恢复到您初始化 VM 时的状态。
Q3) 我如何将它与 Orc.EntityFramework6 一起使用,或者我需要手动设置吗?
您必须手动执行此操作。 Catel 中的 VM 与模型一起工作,这取决于您将它们保存到何时/何处(例如数据库、磁盘、Web 服务等)
Q4) SaveViewModelAsync() 和 SaveAsync() 有什么区别?
SaveViewModelAsync
是被调用的 public 方法,它会为您处理管道。 SaveAsync
是一种您可以覆盖以添加额外保存逻辑(例如存储在数据库中、更新服务等)的方法。
Q5) CancelViewModelAsync() 和 CancelAsync() 有什么区别?
见第 4 题
我正在测试 Catel MVVM,我想使用已实现的 IEditableObject
。我有一些问题,但我发现的 documentation 在这一点上不是很详细。
有人有帮助吗 link,我必须如何设置它或它如何工作,或类似的东西?或者我真的应该看看源代码,以获得这些要点并感受一下 catel 是如何工作的。
我得到的问题是:
- 方法
SaveViewModelAsync()
的具体作用是什么? - 它在哪里保存数据,或者我可以在哪里配置它?
- 如何将它与
Orc.EntityFramework6
一起使用,或者我需要手动使用它吗? SaveViewModelAsync()
和SaveAsync()
有什么区别?CancelViewModelAsync()
和CancelAsync()
有什么区别?
我只能取消一次编辑。如果我再次编辑相同的 ViewModel,则取消不再有效。
我认为在第一次取消后只缺少一个 BeginEdit()
,就像 documentation 建议的那样。这里有一些关于这一点的信息:
- 我编辑了 ViewModel 并且模型设置了新值
- 我执行了
CancelViewModelAsync()
,Model中的setter没有被触及 - 我编辑了 ViewModel,模型设置了新值。当前值为原值
- 我执行
CancelViewModelAsync()
,什么都没发生 - 我编辑了 ViewModel,模型设置了新值。当前值是步骤 3 中编辑的值,如视图显示
感谢帮助
一个问题中有很多问题,但会尝试回答它们:
Q1) SaveViewModelAsync()
方法到底是做什么的它在所有支持它的模型上调用 IEditableObject.EndEdit
(并装饰有 ModelAttribute
Q2) 数据保存在哪里,或者我可以在哪里配置?
它只是批准对模型的更改,它不会 "save" 任何东西。因此,例如,如果您使用的是 Catel 模型,它将提交 VM 所做的更改。如果您取消,它会将模型恢复到您初始化 VM 时的状态。
Q3) 我如何将它与 Orc.EntityFramework6 一起使用,或者我需要手动设置吗?
您必须手动执行此操作。 Catel 中的 VM 与模型一起工作,这取决于您将它们保存到何时/何处(例如数据库、磁盘、Web 服务等)
Q4) SaveViewModelAsync() 和 SaveAsync() 有什么区别?
SaveViewModelAsync
是被调用的 public 方法,它会为您处理管道。 SaveAsync
是一种您可以覆盖以添加额外保存逻辑(例如存储在数据库中、更新服务等)的方法。
Q5) CancelViewModelAsync() 和 CancelAsync() 有什么区别?
见第 4 题