2012-02-08 5 views
0

이것이 가능한지 확실하지 않습니다. 나는 그것이 제대로 MyClass의 모든 항목을 표시하도록이 같은 콤보 ... 그게 가능한 옵션을로드 뒤에 코드하나의 ComboBox 선택을 두 개의 서로 다른 데이터에 바인딩 할 수 있습니까?

<ComboBox Name="testType" 
      Margin="0,5,0,0" 
      IsTextSearchEnabled="True" 
      DisplayMemberPath="Description" 
      SelectedValue="{Binding MyClass.Id, Mode=TwoWay}" 
      SelectedValuePath="Id"/> 

...

 DataTable testCatList = TestTypeBase.GetAll(); 
     testType.ItemsSource = testCatList.DefaultView; 

을 만들었습니다. 사용자가 선택하면 MyClass의 Id 필드가 의도 한대로 업데이트됩니다. 큰.

여기 내 문제가 있습니다 : 내 testCatList 각 행에 대한 ID 및 설명이 모두 포함되어 있고 해당 필드를 모두 현재 MyClass 인스턴스에 바인딩 된 싶습니다. 그래서 여기 내가 뭘하려입니다 : 여기

<ComboBox Name="testType" 
      Margin="0,5,0,0" 
      IsTextSearchEnabled="True" 
      DisplayMemberPath="Description"> 
    <ComboBox.SelectedValue> 
     <MultiBinding Converter="{???}"> 
      <Binding Path="MyClass.Id" Mode="TwoWay"/> 
      <Binding Path="MyClass.Description" Mode="TwoWay"/> 
     </MultiBinding> 
    </ComboBox.SelectedValue> 
</ComboBox> 

, 내가 MyClass.Id 선택한 ID와 선택 정보로 설정 MyClass.Description로 설정해야하고 싶습니다. 보시다시피, Id를 더 이상 원하지 않기 때문에 SelectedValuePath를 제거했습니다. 그러나 변환기 (위의 물음표 참조)에 사용할 항목을 모르겠습니다.

어떤 아이디어, 오 전문가 StackOverflow? 감사.

+0

나는 그것을 얻으려는 편도 변환기부터 시작하겠다. 코드 뒤에 변환기를 만들었습니까? 그렇다면 가지고있는 것을 게시하십시오. – Paparazzi

+0

아니요, 데이터가 올바른 형식 (DataTable.Id> MyClass.Id 및 DataTable.Description> MyClass.Description)로되어 있으므로 변환기를 만들지 않았습니다. 코드를 사용하지 않고 두 필드를 바인딩하는 방법이 있다고 생각했습니다. – Jarvis

+0

내가 아는 변환기없이 결합 또는 분할 할 방법이 없습니다. Converter 구문을 사용하면 변환기가 필요하다는 표시가되지 않습니까? 클래스 인 경우 조합을 나타내는 Property를 만들 수 있으므로 단일 값처럼 보입니다. – Paparazzi

답변

0

정확하게 이해했다면 SelectedValue 대신 SelectedItem 속성을 사용해보십시오. 그런 식으로 선택한 MyClass 인스턴스와 물론 모든 속성을 가져올 수 있습니다.

SelectedItem="{Binding CurrentSelectedMyClassItem}" 
+0

네, 그렇습니다. 선택한 항목 전체가 필요합니다. 감사합니다. 감사합니다. 그러나 나는 여전히 내 MultiBinding을 사용하여 MyClass에서 단지 2 개의 (많은) 필드를 채우기 위해 Converter 값을 고수하고있다. – Jarvis