0

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

在我的mainView我有一个ContentPresenter它的 Content 属性绑定到innerViewModel并且它的 Visibility 绑定到一个IsVisible属性。Visibility 属性是 Collapsed 并且很少设置为 Visible。

mainViewModel是列表中约 1000 个中的一个。目前,每个实例mainViewModel也有一个innerViewModel几乎从未使用过的实例。是否有一种延迟实例化的标准方法,innerViewModel只有当它的视图变得可见时才创建它?懒惰实例化的正常方法不起作用,因为innerViewModel在绑定中使用。

也许有更好的方法来将一个罕见的控件容纳在另一个控件中?

4

2 回答 2

2

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

于 2012-11-16T12:23:29.200 回答
0

“是否有一种懒惰地实例化 innerViewModel 的标准方法,以便仅在它的视图变得可见时才创建它?”

解决方案就是这样做。现在,在 IsVisible 属性首次设置为 true 之前,我实际上并没有创建 innerViewModel 的实例。这意味着 mainView 上的 ContentPresenter 的 Content 大部分时间都绑定为 null,但这似乎不是问题。

于 2012-11-16T12:43:03.787 回答