0

我想注册一些具有每个 Window-root 生活方式的组件。

有谁知道如何实现这一目标?

我知道我可以使用 BoundTo 生活方式并将我的服务绑定到窗口的根目录,但是这种生活方式不支持动态解析的视图模型。

我的视图模型加载一些数据,然后通过工厂为每个结果动态创建其他视图模型。

感谢您的任何提示!

4

2 回答 2

0

可能不是您正在寻找的东西,但我不确定我是否完全理解您想要做的事情:

如果您使用 Windsor 的类型化工厂功能并且您的工厂实现了 idiposable,那么处置您的工厂将处置它创建的所有组件。因此,如果您的窗口采用临时工厂(或工厂),您可以在您的窗口处置中处置它们。

在此处输入工厂文档

于 2013-11-01T20:10:52.387 回答
0

我终于自己解决了。

我创建了 4 个类:

  • 一个 WindowScope,它定义了 WindowScope.Current
  • 一个 RootViewModelFactory,它创建所有根视图模型并为每个根视图模型创建一个新的 WindowScope。
  • 一个 ViewModelFactory,它将 WindowScope.Current 设置为它创建的范围,然后使用容器来解析此范围下的 ViewModel。
  • 一个 WindowScopeAccessor(实现 IScopeAccessor),它使用 WindowScope.Current 为每个窗口创建一个 LifetimeScope。
于 2013-11-03T12:10:20.787 回答