WPF中组合框的链接

时间:2016-12-12 10:32:58

标签: c# .net wpf mvvm image-loading

我在WPF(MVVM)应用程序中遇到性能问题。我在一个页面中有4个组合框,显示一些数据和图像。当调用该ViewModel的构造函数并将其 SelectedItem 属性设置为 FirstOrDefault 时,将填充第一个组合(COMBO A)的 ItemsSource 。之后,下一个Combo(COMBO B)的 ItemsSource SelectedItem 是从第一个组合的 SelectedItem 属性设置的(COMBO A) )。同样适用于COMBO C和COMBO D.由于这种链接,加载页面需要很长时间。 加载所有数据对我来说很重要。但是加载图像的延迟是可以接受的。我是否可以首先加载所有数据,然后加载视图,加载视图后加载图像,以便用户不会感觉到滞后。

1 个答案:

答案 0 :(得分:0)

首先,您应该确保图像和数据加载(换句话说,非组合源数据)在这里是瓶颈。 请考虑使用一种性能分析器来检查这一点。一旦你检查了这一点并发现它是一个瓶颈,你可以将你的组合源数据加载和所有其他数据加载分开,接下来的步骤:

  1. 获取C' tor。
  2. 中所有与组合源相关的数据
  3. 使用触发器到操作模式将Onload事件处理移动到视图模型(因为您有MVVM)。
  4. 在Onload事件处理程序中调用所有其他(不是与组合相关的)数据加载。此外,您可以考虑在加载大量数据时使用进度条,这将改善用户体验。
  5. 使用触发器到操作模式将Onunload事件处理移动到您的视图模型(因为您有MVVM)。
  6. 在Onunload事件处理程序内部调用数据清除逻辑(如果需要)。
  7. 如果你使用的是像Caliburn micro或MVVM light这样的MVVM框架,那就更简单了。例如,内置了一个OnActivate处理程序(Caliburn micro / Screen),您可以在视图模型中覆盖此方法,并将数据加载事件简单地移动到该方法中,然后每次激活屏幕时都会刷新数据。
  8. 就是这样,如果您需要更多解释,请告诉我。

    最好的问候。