2011-11-07 7 views
0

データグリッドからデータを抽出するのが難しいです。私はDataGridでセレクションチェンジイベントを使用していました。私は選択された行と列のインデックスを取得することができました。しかし、データグリッドやデータグリッド、または選択されたセルから正確なデータを取得するためのプロパティは見つかりませんでした。皆さんから助言を得ることを願っています。wpfのDataGridからデータを抽出するには?

+1

もっと具体的に言えば、最初にグリッドのItemsSourceを使用できないのはなぜですか? –

+0

item sourceはリストであり、その要素はDataGridのcomboboxcolumnの内容です。だから私はユーザーの選択された値を取得したい。 –

+0

私は、データグリッドの選択が変更されたときに、データグリッドの「スナップショット」を取得することをお勧めします。しかし、私はそれのためのプロパティを見つけることができませんでした。もう一つの方法は?(私はわからない)バインディングを通してです。私は文字列にcomboboxcolumnのテキストバインディングを使用し、選択が変更されたときに文字列を取得します。しかし、私はそれを行う方法がわかりません。 –

答えて

2

、その後、あなたのSelectedItemは、あなたのItemsSourceのアイテムになります。

コードは多少、以下のようにようにする必要があります。

あなたは、コンボボックスを使用して上記のコメントがあったので、ここでの例です:あなたのデータグリッドのためのDataContextを

<DataGrid ItemsSource="{Binding MyData}" AutoGernateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridComboBoxColumn ItemsSource="{Binding Path=DataContext.ComboBoxOptions, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" 
           DisplayMemberPath="Name" 
           SelectedValuePath="Id" 
           SelectedValueBinding="OptionId" /> 
    </DataGrid.Columns> 
</DataGrid> 

ObservableCollection<SomeItem> MyData { get; set; } 
ObservableCollection<Option> ComboBoxOptions{ get; set; } 

を含んでいるでしょうSomeItemクラスはOptionIdの性質を持っているでしょうし、 Optionクラスは となり、IdNameフィールドになります。あなたがデータグリッド内の項目を選択すると、この例では

DataGrid.SelectedItemが含まれますWPFでSomeItem

は覚えておいてください、あなたのデータ(DataContextのは)あなたのアプリケーションであり、コンボボックス、テキストボックス、データグリッドのようなあなたのUI要素、ユーザーがあなたのデータとやりとりできるようにするためのきれいなインターフェイスです。

0

MouseDoubleClickイベントでは、dataGrid1.SelectedIteamをObjectとして使用します。あなたのデータを含むのItemsSourceにあなたのデータグリッドのバインド

private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     edit(this.dataGrid1.SelectedItem as YourObject); 
    } 
関連する問題