2017-06-19 15 views
1

私はDataGridにバインディング辞書を使用しています。今度は、DataGridから選択した行を取得します。ここまで私が試したことはここまでです。CのDataGridからselectedRowデータを取得する方法

Dictionary<int, string> dicKeyValue = new Dictionary<int, string>(); 

public MainWindow() 
    { 
     InitializeComponent(); 

     dataGrid.DataContext = dicKeyValue; 

     dicKeyValue.Add(1, "INDIA"); 
     dicKeyValue.Add(2, "CHINA"); 
     dicKeyValue.Add(3, "AMERICA"); 
     dicKeyValue.Add(4, "RUSSIA"); 

    } 

private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var sample = (sender as DataGrid).SelectedItem as ****** 
     // Here in the above line what should I write to get the values of selected row. 

     if (sample != null) 
     { 

     } 


    } 

私は今、あなたたちは

私の質問が見えることがあります...これにアクセスする方法を私を助けてくださいすることができます.....イミディエイトウィンドウに

((sender as DataGrid).SelectedItem) 
{[8, SCAN]} 
Key: 8 
Value: "SCAN" 
key: 8 
value: "SCAN" 

これを試してみましたデバッグ中thisと似ていますが、私の質問では、SelectedItemを型キャストできる正しい型を知りたいと思います。

+1

@Kartoffelを、彼らはクラスにバインドするので、キャストすることが可能です。しかし私の場合、私はそれを辞書に縛ります。だから私はキャストできる正しいタイプを求めています。私は両方の質問が異なると思う.... –

答えて

2

Dictionary<TKey, TValue>ICollection<KeyValuePair<TKey, TValue>>を継承するので、アイテムタイプはKeyValuePair<int, string>である必要があります。目的をキャストするために、あなたはNullable<T>を使用することができます。

var item = dataGrid.SelectedItem as KeyValuePair<int, string>?; 
if (item.HasValue) // use item.Value 

しかし、dataGrid.SelectedValuePath = "Key"を使用して、dataGrid.SelectedValue代わりのSelectedItemを参照する価値があるかもしれません。

+0

KeyValuePairとしてはnull値ではない値の型私は** "((送信者としてDataGrid).SelectedItemをKeyValuePairとして使用することはできません)" ** –

+0

@AJAYKUMAR 'as'の代わりにキャスト: '(selectedItemがKeyValuePairである場合){var item =(KeyValuePair )selectedItem; } ' – grek40

+0

@AJAYKUMAR Nullableについての私の編集を参照 – grek40

2

これは動作するはずです:あなたが提供されたリンクで

private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    DataGrid dataGrid = sender as DataGrid; 
    if (dataGrid.SelectedItem != null) 
    { 
     var sample = (KeyValuePair<int, string>)dataGrid.SelectedItem; 
     int key = sample.Key; 
     string value = sample.Value; 
    } 
} 
+0

なぜ私の答えを投票するのではなく編集しましたか?サンプルはKeyValuePair のキーと値です... – mm8

+0

編集をロールバックすることをお勧めします。私は、AJAYが、編集を行う際に、「KeyValuePair」とその「Nullable」を混同して作業していたと思います。 – grek40

+0

@ grek40:編集がロールバックされました。 – mm8

関連する問題