2012-01-09 2 views
1

이미지와 이름을 가진 사람의 정적 목록이있는 WPF ComboBox가 있습니다. 선택한 이름을 db 테이블에 바인딩하려고합니다. 내가 지금 뭐하는 거지 방법은 (분명 잘못) 난 단지 객체를 바인딩 때문에 쓰고 있어요 : 내 DB 테이블에ComboBoxItem의 자식 요소의 텍스트 바인딩

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을 하드 코딩의

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

선택한 항목을 처리하는 데 사용하는 코드가 변경된 것을 표시 할 수 있습니까? WPF는 단지 프리젠 테이션 레이어 일 뿐이므로 데이터베이스에 쓸 코드 숨김 기능이 필요합니다. – msarchet

+0

선택한 항목 변경 이벤트를 사용하고 있지 않습니다. 내가 있어야 할까? – user1081822

답변

1

대신 버튼 클릭 이벤트에 DB 테이블에 변경 사항을 저장하고, 당신은 DataTemplate을 사용해야합니다. 그런 다음 SelectedValuePath를 사용하여 항목의 FirstName 속성을 기반으로 값을 선택해야합니다. 그런 다음 텍스트 상자에 바인딩 할 수 있습니다.

xaml의 텍스트 상자에 직접 바인딩하려면 요소 이름을 지정해야합니다 (x : Name = "myTextBox"). 그런 다음 콤보 상자의 SelectedValue를 다음과 같이 바인딩합니다 : SelectedValue = "{Binding ElementName ="myTextBox ", Path ="Text "}".

일반적으로 텍스트 상자에 콤보 박스를 바인딩하는 것은 좋은 생각입니다.