2016-10-27 13 views
0

だから私はまだWPFとはかなり慣れていない午前リサイズに、あなたは私がVB.NET WPF DataGridから列の値を取得する方法は?

row.Cells("ID").Value.ToString() 

のような値を得ることができます。しかし、WPFには、行がデータグリッドのメンバーではないCellDoubleClickイベントを持つことができます。では、ユーザーが行をダブルクリックするだけで、選択したIDの値をどのように取得できますか? enter image description here ここに私の質問を明確にするための写真があります。表示されるレコードは、データテーブルからのものです。複数行のレコードが表示され、ユーザーが行のいずれかをダブルクリックすると、選択した行IDの値はどのように取得されますか? selectedIndexを取得するのは簡単ですが、私はIDの値を取得する方法を理解しようとして失われています。

------- ------- UPDATE

のでリサイズに、私はこれではなく、必ずどのようにWPFのようにIDを取得します。

答えて

2

WPFデータグリッドでは、グリッド自体をデータの取得に使用しないでください。代わりに、グリッドについて知っている情報を使用してください。選択された行インデックス、または "SelectedIndex"は、バインドされたデータソースを相互参照するために使用する必要があります。

例えば

、あなたは、いくつかのDataTableを持っていたし、それは、あなたがこのようなものを持っているかもしれないのDataGridへのビューの結合したことを想定してみましょう:あなたがたDataTableの結合されている場合には動作するはず

Dim View As DataView = TryCast(DataGrid1.ItemsSource, DataView) 
    If View IsNot Nothing Then 
     Dim ViewRow As DataRowView = View.Item(DataGrid1.SelectedIndex) 
     Dim ColumnValue As Object = ViewRow.Item("ID") 'or ViewRow.Item(0) for positional value. 

     'do something with ColumnValue here. 
    End If 

グリッドを表示することができますが、グリッドは任意のIEnumerableを取ることができることを覚えています。だからあなたの質問は本当にオブジェクトがあなたのItemsSourceであるか、そのオブジェクトがIEnumerableをどのように実装しているかに大きく依存します。

希望に応えたい!

+0

ありがとうございました! itemsourceとdataviewを試そうとした理由をさらに説明してください。 – Student

+1

まあ、私が述べたように、ItemsSourceは実際にはIEnumerableインターフェイスです。これは文字通りどんなタイプのオブジェクトでもあります。私は安全のためにTryCastを使用しています。データ型が "DataView"(DataTableの場合はDataView型を返す)でない場合、TryCastは "Nothing"を返します。 –

関連する問題