2012-01-09 10 views
1

イメージと名前を持つ静的な人物リストを持つWPF ComboBoxがあります。選択したFirstNameをdbテーブルにバインドしようとしています。私は今それをやっている方法は、(明らかに間違った)私は唯一のオブジェクトを結合し、それゆえ書いています:私のdbテーブルにComboBoxItemの子要素のTextプロパティをバインドします。

System.Windows.Controls.ComboBoxItem

を。

TextBlock.Textプロパティから、選択したComboBoxItemのFirstNameをバインドするにはどうすればよいですか?純粋にWPFでこれを行う方法はありますか?

 <ComboBox Text="{Binding Path=FirstName}"> 
     <ComboBoxItem> 
      <StackPanel Orientation="Horizontal" > 
       <Image Source="/Images/Alice.png" /> 
       <TextBlock Text="Alice" /> 
      </StackPanel> 
     </ComboBoxItem> 
     <ComboBoxItem> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="/Images/Bob.png" /> 
       <TextBlock Text="Bob" /> 
      </StackPanel> 
     </ComboBoxItem> 
    </ComboBox> 

私が代わりにcomboboxitemsをハードコーディングで、あなたがするDataTemplateを使用する必要があり、ボタンのクリックイベントにdbテーブルへの変更

private void SaveAndClose_Click(object sender, RoutedEventArgs e) 
    { 
     bindingView = (BindingListCollectionView)myCollection.View; 
     bindingView.CommitEdit(); 
     db.SubmitChanges(); 
    } 
+0

選択したアイテムを処理するために使用しているコードが変更されていることを表示できますか? WPFはプレゼンテーション層だけを意図しているので、データベースに書き込むためのコードビハインドが必要です。 – msarchet

+0

選択したアイテム変更イベントは使用しません。私はすべきですか? – user1081822

答えて

1

を保存しています。次に、SelectedValuePathを使用してアイテムのFirstNameプロパティに基づいて値を選択する必要があります。次に、テキストボックスにバインドすることができます。

xamlのテキストボックスに直接バインドする場合は、要素に名前を付ける必要があります(x:Name = "myTextBox")。次に、コンボボックスのSelectedValueを次のようにバインドします。SelectedValue = "{Binding ElementName =" myTextBox "、Path =" Text "}"。

一般に、私はコンボボックスをテキストボックスにバインドするのは良い考えではないと思います。

関連する問題