我正在使用MVVM模式和Entity Framework开发一个WPF应用程序。我编写了一个包含多个列表的类,这些列表从数据库中获取数据。这些列表用于填充ComboBoxes和其他ItemsControls。
以下是基本的结构:
当我需要在控件上使用它时,我会将其绑定到资源中的属性:
以下是基本的结构:
namespace MiniManager.ViewModel
{
public class LookupLists
{
public LookupLists()
{
using (var db = new ModelContext())
{
Supervisors = db.Users.ToList().Where(u => u.Supervisor);
// More lists...
}
}
public IEnumerable<User> Supervisors { get; set; }
// More lists...
}
}
我在视图中像这样使用类:
<UserControl.Resources>
<lists:LookupLists x:Key="LookupLists"/>
</UserControl.Resources>
当我需要在控件上使用它时,我会将其绑定到资源中的属性:
<ComboBox ItemsSource="{Binding Source={StaticResource LookupLists},
Path=Supervisors}"/>
我的问题是:
LookupLists
对象的生命周期有多长?
- 只要UI处于活动状态?
- 每次视图需要它时是否创建一个新的
LookupLists
实例(因此查询数据库)?