懒惰实例化一个很少使用的视图模型?

时间:2012-11-16 12:11:53

标签: c# .net mvvm viewmodel lazy-initialization

我的主视图模型(mainViewModel)包含一个内部视图模型(innerViewModel),它使用DataTemplate绑定到它的视图(innerView)。

在我的mainView我有一个ContentPresenter,其内容属性绑定到innerViewModel,并且它的可见性绑定到IsVisible属性。 “可见性”属性已折叠,很少会设置为“可见”。

我的mainViewModel是列表中的~1000之一。目前,mainViewModel的每个实例都有一个几乎从不使用的innerViewModel实例。有没有一种标准的方法来懒惰地实例化innerViewModel,只有当它的视图变得可见时才会创建它?懒惰实例化的常规方法不起作用,因为innerViewModel用于绑定。

也许有一种更好的方法可以在另一种控制中容纳一种罕见的控制?

2 个答案:

答案 0 :(得分:2)

尝试使用Lazy对象进行延迟初始化。

答案 1 :(得分:0)

"是否存在一种懒惰地实例化innerViewModel的标准方式,只有当它的视图变得可见时才会创建它?"

解决方案是做到这一点。现在我实际上并没有创建innerViewModel的实例,直到IsVisible属性首次设置为true。这意味着mainView上的ContentPresenter的内容在大多数情况下都绑定为null,但这似乎不是问题。