我们的 Silverlight 应用程序中有一个 ViewModelLocater 类。它由一个基本构造函数和一个用于返回类的 ViewModel 的公共属性组成。代码是这样的
public class ViewModelLocator
{
private Dictionary<string, ViewModel> _viewModels =
new Dictionary<string, ViewModel>();
public ViewModelLocator()
{
_viewModels.Add("Home", HomeViewModel());
_viewModels.Add("Setup", new SetupViewModel());
_viewModels.Add("TasksActivities", new TasksActivitiesViewModel());
_viewModels.Add("Timesheet", new TimesheetViewModel());
}
public ViewModel this[string viewName]
{
get { return _viewModels[viewName]; }
}
}
在每个 XAML 页面中,我们使用该页面设置 ViewModel
DataContext="{Binding [Setup], Source={StaticResource ViewModelLocator}}"
Setup
是上述字典中的键。
Silverlight 应用程序非常大,我们最近才开始调查任何内存泄漏(有很多......)我正在使用 Windbg 来跟踪这些泄漏,我注意到很多内存泄漏导致了 ViewModelLocater 类。每次应用加载 ViewModelLocator 构造函数时,都会为所有视图创建 ViewModel。所以我想知道是否有更好的方法来实现 ViewModelLocator 类。