2012-02-14 2 views
1

내 WPF DataGrid 내부에 콤보 박스가 있습니다. 다음과 같이 작성됩니다.ComboBox에서 선택된 값이 손실 됨

<DataGridTemplateColumn Header="Account"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Path=Account, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{DynamicResource Accounts}" SelectedValue="{Binding Path=Account, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="23" IsTextSearchEnabled="True"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 

이 DataGrid의 DataContext는 ObservableCollection입니다. Transaction 클래스에는 "Account"라는 속성이 있습니다. 아래는이 속성을 만드는 방법입니다.

public string Account 
{ 
    get { return account; } 
    set { account = value; NotifyPropertyChanged("Account"); } 
} 

여기서 내가 뭘 잘못하고 있니? ComboBox에서 항목을 선택하면 상자 외부를 클릭해도 아무 것도 표시되지 않습니다. 계정 속성의 Set 메서드에 중단 점을 설정하면 값은 null입니다.

답변

3

내 문제가 해결되었습니다. Text 속성 바인딩을 설정해야했습니다.

<DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <ComboBox ItemsSource="{DynamicResource Accounts}" Text="{Binding Path=Account}" Height="23" IsTextSearchEnabled="True"/> 
    </DataTemplate> 
</DataGridTemplateColumn.CellEditingTemplate> 
1

ComboBox에서 SelectedItem으로 SelectedValue을 변경하십시오. 두 사람의 차이점을 MSDN에서 읽으십시오.

+0

SelectedItem으로 변경 한 후에도 여전히 작동하지 않습니다. 문제는 차이점없이 동일하게 유지됩니다. 대신 TextBlock의 바인딩에서 뭔가를 변경해야합니까? –

관련 문제