0

1 つのテーブルの値が入力された DataGrid と、ObservableCollection (別のテーブル) から入力された ComboBox を保持する TemplateColumn があります。これは確かに最もエレガントな方法ではありませんが、ゼロから始めてMVVMアプローチを使い始める時間がないので...

言ってみましょう:テーブルドッグ&テーブルDog_breeds

グリッドは Dogs テーブルの値を保持し、ComboBox は Dog_breeds を保持します

ComboBox で Selection が変更されたときに、Dogs テーブルの id_dog_breed を変更する必要があります。

private void breed_combo_SelectionChanged(object sender, SelectionChangedEventArgs e)
  {
    ComboBox comboBox = (ComboBox) sender;
    string test = comboBox.SelectedValue.ToString();
   //parse the value as int and somehow pass to the according row

  }

どうすればこれを達成できますか?この辺りのどこかに、ずっと前に回答された同様の質問があるに違いないと思いますが、見つけられませんでした。

4

1 に答える 1

0

文字列にキャストしないでください。コンボ ボックスで選択したアイテムを、ItemSource がバインドされているオブジェクト タイプにキャストしてから、そのすべてのプロパティを取得する必要があります。

private void breed_combo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   ComboBox comboBox = (ComboBox) sender;
   var selectedBreed = (Dog_breed)comboBox.SelectedValue;
   //now you can access the id and pass it on 
   //assuming that the Id is property-> selectedBreed.Id
   //you should be able to access Dogs through items, I am guessing here what you structure is
   var dogs =(IEnumerable<Dog>)dataGrid.Items
   //don't know how you match them up from your question, but you should be able to find a dog
   match = dogs.FirstOrDefault(d => d.BreedName == selectedBreed.Name);
   If(match != null)
      //do your update
于 2013-06-02T15:27:45.497 に答える