2010-06-20 1 views
6

DataGridComboBoxColumn에서 셀을 클릭하면 ComboBox가 표시되고 아이템을 선택할 수 있습니다. 아이템을 선택했을 때 맨 위의 보이는 아이템은 괜찮습니다. 그러나 셀 일명 ComboBox가 DataGrid에서 다른 것을 클릭하여 초점을 잃으면 이전에 선택한 셀에 항목/텍스트가 더 이상 표시되지 않습니다.선택 항목이 변경되면 DataGridComboBoxColumn의 내용이 손실됩니다.

어떻게 그 선택/선택된 텍스트를 유지할 수 있습니까?

<DataGridComboBoxColumn 
      Width="*" 
      Header="Monday" 
      DisplayMemberPath="SchoolclassName" 
      SelectedValueBinding="{Binding SchoolclassCodeMonday}" 
      ItemsSource="{Binding Source={StaticResource ClassCodes}}"> 

    <DataGridComboBoxColumn.ElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="IsSynchronizedWithCurrentItem" Value="False" /> 
      <Setter Property="ItemsSource" 
        Value="{Binding Source={StaticResource ClassCodes}}" /> 
     </Style> 
    </DataGridComboBoxColumn.ElementStyle> 

    <DataGridComboBoxColumn.EditingElementStyle>     
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" 
        Value="{Binding Source={StaticResource ClassCodes}}" /> 
      <Setter Property="IsDropDownOpen" Value="True" /> 
     </Style>     
    </DataGridComboBoxColumn.EditingElementStyle> 
</DataGridComboBoxColumn> 

내 문제에 대한 해결책이 될 것 같다 :

내 코드 이잖아 http://wpf.codeplex.com/Thread/View.aspx?ThreadId=46627 (맨 아래로 스크롤)하지만 난 내 문제에 해결책을 전송할 수 없습니다. 내 모델 설정이 아주 다르기 때문에.

SchoolclassNameSchoolclassCodeMonday이 일명 SchoolclassCodes 유형의 ObservableCollection에의 한 속성입니다 TimeTable.cs에서 문자열 속성입니다 ClassCodes Schoolclass.cs에서 문자열 속성입니다 | Schoolclass |

제 바인딩을 수정하는 방법을 아는 사람이 있습니까?

+1

는 기존의 코드를했다 : 나는 추가 아래 내가 콤보 상자를 떠날 때 지금 SchoolclassCode는 셀에 남아 있습니다. 일반적으로 SelectedValuePath에 ID를 사용하지만 내 "ID"는 이미 고유 한 SchoolclassCode입니다. SelectedValuePath = "SchoolclassName"그냥 나를 위해 작동 은 ... 나는 더 나은 설명이나 기술적 인 내부자 지식이없는하지만 당신은 나에게 조금 도움이 여기 읽을 수 있습니다 : HTTP : //blogs.msdn를 .com/b/vinsibal/archive/2008/10/31/wpf-datagrid-datagridcomboboxcolumn-v1-intro.aspx – msfanboy

답변

1

나는 아마도 더 이상 필요하지 않지만 어쩌면 다른 사람을 도울 것이라고 생각합니다. ComboBox가 변경된 바인딩을 업데이트 할 필요가 없습니까? 예 :

SelectedValueBinding="{Binding SchoolclassCodeMonday}" 

은 다음과 같습니다 속성이 당신의 관찰 컬렉션 코드에서 변경 될 때

SelectedValueBinding="{Binding SchoolclassCodeMonday, 
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 

또한 알림을 발사되어 있는지 확인합니다. 1 DisplayMemberPath = "SchoolclassName" 위를 투표 한 사람 @to