如何将数据库和datagrid绑定到ObservableCollection WPF

如何将数据库和datagrid绑定到ObservableCollection WPF,wpf,binding,datagrid,observablecollection,Wpf,Binding,Datagrid,Observablecollection,我一直在谷歌上寻找答案,但找不到。 这是我的问题,我有一个 数据库表调用已售出商品\u详细信息 七列数据网格 可观测收集 1需要将ObservableCollection与数据库绑定 我想从数据库中获取一组字符串,并需要添加到ObservableCollection中 排。我想实现,类似于下面的代码 ObservableCollection<string> o = new ObservableCollection<string>(); o.add("string1

我一直在谷歌上寻找答案,但找不到。 这是我的问题,我有一个

  • 数据库表调用已售出商品\u详细信息
  • 七列数据网格
  • 可观测收集
1需要将ObservableCollection与数据库绑定

我想从数据库中获取一组字符串,并需要添加到ObservableCollection中 排。我想实现,类似于下面的代码

 ObservableCollection<string> o = new ObservableCollection<string>();
 o.add("string1","string2","string3","string4","string5"); // this has to be one row
 o.add("string6","string7","string8","string9","string10");
添加项目时,会将其发送到ObservableCollection

ObservableCollection<OrderItem> orderItems = new ObservableCollection<OrderItem>();
//and at the right event (key enter is pressed) the orderItem object is added to the orderItems 
orderItems.add(orderI);
ObservableCollection orderItems=新的ObservableCollection();
//在正确的事件中(按下enter键),orderItem对象被添加到orderItems
添加(orderI);

在网格的xaml代码中,我已经直接绑定到数据库,我需要的是将其绑定到ObservableCollection,为什么不创建一个包含5列的datagrid并为此创建一个dataclass呢。因此,datagrid的源可以绑定到视图模型中的ObservableCollection。可以在数据网格的模板内设置每一列。在这种情况下,不需要将每个项目都添加到列表中。可能会将从数据库获取的所有项添加到ObservableCollection

ObservableCollection<OrderItem> orderItems = new ObservableCollection<OrderItem>();
//and at the right event (key enter is pressed) the orderItem object is added to the orderItems 
orderItems.add(orderI);

也许内存消耗会更少,但更好的设计是拥有一个dataclass和一个绑定到datagrid的项列表。这5根弦会有作用的,对吧?对于进一步的计算或计算,最好根据您的需求使用ObservableCollection来重用获取的数据。不管怎样,这取决于你。如果你愿意,你也可以保持传递5个字符串的方式

为什么不创建一个包含5列的datagrid并为此创建一个dataclass呢。因此,datagrid的源可以绑定到视图模型中的ObservableCollection。可以在数据网格的模板内设置每一列。在这种情况下,不需要将每个项目都添加到列表中。可能会将从数据库获取的所有项添加到ObservableCollection@vishakh369我没有这样做,因为在我的应用程序中,datagrid一次将有300多行,这将是内存的浪费,创建对象时我只想“显示”它。这怎么可能是内存的浪费呢?如果源列表绑定到目标,则每次都会更新,并添加一个新行。@vishakh369因此,每当我必须在datagrid中显示行时,我必须向ObservableCollection添加许多“dataclass”对象,那么,与只向ObservaleCollection传递五个字符串而不是传递一个dataclass对象相比,这难道不是一种内存浪费吗?谢谢@vishakh369这是一个很大的帮助我已经做了一项关于这个和其他很多事情的研究,但是我找不到绑定到数据库的方法。如果您能够提供一个示例代码我无法为您编码。如果您提供代码,我将帮助您实现将数据保存到数据库。我已添加了代码集。到目前为止,我已经直接将datagrid绑定到数据库,正如您前面提到的,我计划按照您提到的方式进行,但是我找不到任何应该从db获取/设置数据的代码。您正在从数据库获取详细信息,对吗?所以,当用户编辑列时,您希望将新值写入db?
ObservableCollection<OrderItem> orderItems = new ObservableCollection<OrderItem>();
//and at the right event (key enter is pressed) the orderItem object is added to the orderItems 
orderItems.add(orderI);