【问题标题】:Lazily instantiate a rarely used a view model?懒惰地实例化一个很少使用的视图模型?
【发布时间】:2012-11-05 03:58:05
【问题描述】:

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

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

我的mainViewModel 是列表中约 1000 个之一。目前mainViewModel 的每个实例还有一个几乎从未使用过的innerViewModel 实例。是否有一种懒惰实例化 innerViewModel 的标准方法,以便仅在其视图可见时创建它?延迟实例化的常规方法不起作用,因为 innerViewModel 用于绑定。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      “有没有一种标准的方法来延迟实例化 innerViewModel 以便仅在它的视图变得可见时才创建它?”

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

      【讨论】:

      • 看起来很hacky...也就是说,仅仅因为它不可见,各种属性仍然没有被交互?
      猜你喜欢
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2011-10-21
      相关资源
      最近更新 更多