gpt4 book ai didi

c# - XAML 如何实例化对象?

转载 作者:行者123 更新时间:2023-11-30 14:55:19 25 4
gpt4 key购买 nike

我正在使用 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...
}
}

我在 View 中使用类是这样的:

<UserControl.Resources>
<lists:LookupLists x:Key="LookupLists"/>
</UserControl.Resources>

当我需要在控件上使用它时,我绑定(bind)到资源中的属性:

<ComboBox ItemsSource="{Binding Source={StaticResource LookupLists},
Path=Supervisors}"/>

我的问题是:

  • LookupLists 对象持续多长时间?
    • 只要用户界面处于事件状态?
    • 是否在每次 View 需要时都创建了 LookupLists 的新实例(并因此查询了数据库)?

最佳答案

Resources 中声明的项目被添加到一个特殊的集合中,该集合是 FrameworkElement 的成员。因此,集合将与控件一样存在。

除非控件被销毁,否则不会进行额外的查询(当然除非您进行查询)。

参见 MSDN有关 Resources 属性的更多信息,这是存储这些资源的地方。

关于c# - XAML 如何实例化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com