C# 循环通过数据网格

C# 循环通过数据网格,c#,wpf,C#,Wpf,如何从wpf datagrid获取项目数据: 项目值为{ProductId=1,Name=“fruit”,数量=1,价格=100.0},类型为匿名类型 代码: 编辑 以下是我添加行的方式: this.dgProductList.Items.Add(new { ProductId = product.ProductId, Name = product.Name, Quantity = 1, Price = product.Price }); 考虑到您将问题标记为WPF,您会说: 不要对UI执行

如何从wpf datagrid获取项目数据:

项目值为{ProductId=1,Name=“fruit”,数量=1,价格=100.0},类型为匿名类型

代码:


编辑

以下是我添加行的方式:

this.dgProductList.Items.Add(new { ProductId = product.ProductId, Name = product.Name, Quantity = 1, Price = product.Price });

考虑到您将问题标记为
WPF
,您会说:

不要对
UI
执行操作。如果你需要找些东西,可以在模型侧找到。之后,如果您需要
UI
以某种方式作用于已建立的项目,请在
ModelView
上操作,以在屏幕上推送
UI
更改


简言之:不要在
WPF
中对
UI
采取行动,因为
UI
很容易成为更改的对象,您的代码将被破坏。使用powerfull data binding
WPF
提供给您的功能。考虑到您将问题标记为
WPF
,您会说:

不要对
UI
执行操作。如果你需要找些东西,可以在模型侧找到。之后,如果您需要
UI
以某种方式作用于已建立的项目,请在
ModelView
上操作,以在屏幕上推送
UI
更改


简言之:不要在
WPF
中对
UI
采取行动,因为
UI
很容易成为更改的对象,您的代码将被破坏。使用WPF提供给您的强大数据绑定功能。

首先,我必须说我同意Tigran,如果您使用WPF,建议的方法是利用数据绑定

在您不使用数据绑定的特定情况下,您将向数据网格添加匿名类型,然后希望稍后检索它们

首先,我建议不要使用匿名类型,而是为产品创建一个类

无论如何,如果您想继续使用匿名类型,可以应用建议的解决方案


祝你好运。

首先我必须说我同意Tigran,如果你与WPF合作,建议的方法是利用数据绑定

在您不使用数据绑定的特定情况下,您将向数据网格添加匿名类型,然后希望稍后检索它们

首先,我建议不要使用匿名类型,而是为产品创建一个类

无论如何,如果您想继续使用匿名类型,可以应用建议的解决方案


祝你好运。

< P>就像前面的答案告诉你的,你应该考虑使用WPF绑定。

但如果你真的不想,你可以试试这个,但这不是“WPF方式”:

objectobjecttofind=new{ProductId=1,Name=“fruit”,数量=1,价格=100.0}//创建应该在datagrid中找到的对象。
objectresult=dg.Items.Cast().ToList().Find(o=>o.Equals(objectToFind))//找到目标

<代码> > P>就像前面的答案中所告诉你的,你应该考虑使用WPF绑定。

但如果你真的不想,你可以试试这个,但这不是“WPF方式”:

objectobjecttofind=new{ProductId=1,Name=“fruit”,数量=1,价格=100.0}//创建应该在datagrid中找到的对象。
objectresult=dg.Items.Cast().ToList().Find(o=>o.Equals(objectToFind))//找到目标

您是否尝试过item.ProductId、item.Name、item.Quantity、item.Price?没有使用wpf,这对我来说很有意义。如何将集合绑定到datagrid?您可以发布更多代码吗?只需将您的datagrids itemssource属性绑定到产品集合,并对该集合执行所有操作,查询、添加、删除。。。它是如此的简单和干净,你不必问多个问题如何访问网格中的项目…你试过item.ProductId,item.Name,item.Quantity,item.Price吗?没有使用wpf,这对我来说很有意义。如何将集合绑定到datagrid?您可以发布更多代码吗?只需将您的datagrids itemssource属性绑定到产品集合,并对该集合执行所有操作,查询、添加、删除。。。它是如此的简单和干净,你不必问关于如何访问网格中的项目的多个问题……我没有使用ItemsSource=“{Binding}”。@KevFixx:好吧,这就是实际的意义。最好你开始使用它。如果你不使用,就使用WindowsForms。我没有使用ItemsSource=“{Binding}”。@KevFixx:好吧,这就是实际意义。你最好开始使用它。如果你不这样做,就用WindowsForms。好的,我会尝试数据绑定,很难做到。好的,我会尝试数据绑定,很难做到。
this.dgProductList.Items.Add(new { ProductId = product.ProductId, Name = product.Name, Quantity = 1, Price = product.Price });
object objectToFind = new { ProductId = 1, Name = "fruit", Quantity = 1, Price = 100.0 }; //create the object which should be found in your datagrid.

object result = dg.Items.Cast<object>().ToList().Find(o => o.Equals(objectToFind)); //find the object