0

wpfデータグリッドからアイテムデータを取得するにはどうすればよいですか:

item の値は { ProductId = 1, Name = "fruit", Quantity = 1, Price = 100.0 } で、タイプは Anonymous Type です。

コード:

foreach (var item in this.dgProductList.Items)

編集済み

これは私が行を追加する方法です:

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

3 に答える 3

4

で質問にタグを付けたことを考えるとWPF、次のように言うでしょう:

に基づいて行動しないでくださいUI。何かを見つける必要がある場合は、モデル側で見つけてください。その後、UI何らかの方法でファウンドアイテムに作用する必要がある場合は、画面に変更ModelViewをプッシュするために作用します。UI

要するに、 で行動UIしないでください。簡単に変更の対象になり、コードが壊れてしまいます。強力なデータ バインディングオファーの利点を活用してください。WPFUIWPF

于 2012-09-27T08:10:03.033 に答える
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
于 2012-09-27T08:51:05.950 に答える
0

最初に、私は Tigran に同意すると言わなければなりません。WPF を使用している場合、推奨されるアプローチはデータバインディングを利用することです。

特定のケースでは、データバインディングを使用せず、匿名型をデータグリッドに追加していて、後でそれらを取得したいと考えています。

まず、匿名型を使用せず、代わりに Product のクラスを作成することをお勧めします。

とにかく、匿名型を引き続き使用したい場合は、ここで提案されているソリューションを適用できます

幸運を。

于 2012-09-27T08:30:57.200 に答える