如何将一个 ViewModel 分成多个?
How to separate a ViewModel in multiple?
根据 的评论,我觉得有必要问这个问题。
这是我目前正在开发的应用程序,为了避免进一步的问题并继续与 Catel 合作(无论我遇到什么麻烦,使用起来都非常愉快),我需要解释一下几个话题。
我有一个 API class(我们称它为 API
),它包含几种连接到某些内容管理器并对其执行操作的方法。
我想将单个 class 拆分为多个 Model
class(例如,两个即可):
Connection
:不言自明,将包含两个 Commands
调用 API.Connect
和 API.Disconnect
DataSource
:表示 where/on 应用程序将在内容管理器中工作,其中一个 Command
调用 API.LoadDataSource
就模型而言,还可以,没什么难的。我的第一个问题来自相关的 ViewModels
;我需要在其中的每一个中使用相同的 API
实例。所以现在,我只使用一个 ViewModel,与我的 Models
关联的 UserControls
只是从我的 MainWindow
继承它(这些是常规的 UserControls,不是 Catel 的,否则它会对我大喊大叫没有适合他们的 ViewModels)。
由于 Catel 不太喜欢嵌套视图模型,这是我的问题:
如何 pass/use 各种 ViewModel 之间的参数?(或 如何在不使用嵌套视图模型的情况下分离主 ViewModel?)
当我需要在应用程序中保持状态时,我会为此使用服务。视图模型是视图的表示,并且仅在视图处于活动/可见状态时才会存在。状态不止于此,它需要在不同视图模型中的整个应用程序中进行管理。
因此我总是选择拥有一个保存状态的服务。此服务在 ServiceLocator(IoC 容器)中注册,并将通过依赖注入注入到视图模型中。
这样您就可以在加载视图模型时始终检索信息。最好的方法是在 Initialize 方法中(您也应该在这里订阅您的事件)。您应该在视图模型的 Close 方法中清理您的视图模型(取消订阅事件)。
根据
这是我目前正在开发的应用程序,为了避免进一步的问题并继续与 Catel 合作(无论我遇到什么麻烦,使用起来都非常愉快),我需要解释一下几个话题。
我有一个 API class(我们称它为 API
),它包含几种连接到某些内容管理器并对其执行操作的方法。
我想将单个 class 拆分为多个 Model
class(例如,两个即可):
Connection
:不言自明,将包含两个Commands
调用API.Connect
和API.Disconnect
DataSource
:表示 where/on 应用程序将在内容管理器中工作,其中一个Command
调用API.LoadDataSource
就模型而言,还可以,没什么难的。我的第一个问题来自相关的 ViewModels
;我需要在其中的每一个中使用相同的 API
实例。所以现在,我只使用一个 ViewModel,与我的 Models
关联的 UserControls
只是从我的 MainWindow
继承它(这些是常规的 UserControls,不是 Catel 的,否则它会对我大喊大叫没有适合他们的 ViewModels)。
由于 Catel 不太喜欢嵌套视图模型,这是我的问题:
如何 pass/use 各种 ViewModel 之间的参数?(或 如何在不使用嵌套视图模型的情况下分离主 ViewModel?)
当我需要在应用程序中保持状态时,我会为此使用服务。视图模型是视图的表示,并且仅在视图处于活动/可见状态时才会存在。状态不止于此,它需要在不同视图模型中的整个应用程序中进行管理。
因此我总是选择拥有一个保存状态的服务。此服务在 ServiceLocator(IoC 容器)中注册,并将通过依赖注入注入到视图模型中。
这样您就可以在加载视图模型时始终检索信息。最好的方法是在 Initialize 方法中(您也应该在这里订阅您的事件)。您应该在视图模型的 Close 方法中清理您的视图模型(取消订阅事件)。