循环通过datagrid

时间:2012-09-27 08:04:50

标签: c# wpf

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

项目值为{ProductId = 1,Name =“fruit”,Quantity = 1,Price = 100.0},类型为匿名类型。

代码:

foreach (var item in this.dgProductList.Items)

EDITED

这是我添加行的方式:

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

3 个答案:

答案 0 :(得分:4)

考虑到您使用WPF提问,请说:

不要对UI采取行动。如果您需要查找内容,请在模型侧找到它。之后,如果您需要UI以某种方式对已创建的项目执行操作,请在ModelView上操作以在屏幕上推送UI更改。

简而言之:不要对UI中的WPF采取行动,因为UI它很容易成为变更主体,而您的代码将会中断。使用强大的数据绑定WPF提供给您的好处。

答案 1 :(得分:0)

起初我必须说我同意Tigran,如果你使用WPF,建议的方法是利用数据绑定。

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

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

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

祝你好运。

答案 2 :(得分:0)

就像之前的答案中告诉你的那样,你应该考虑使用WPF-Binding。

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

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