2011-03-23 4 views
10

데이터를 표시하려고 할 때 데이터 변환을 위해 Convert() 메서드가 호출되고 변환 된 데이터가 대신 표시된다는 것을 알고 있습니다.ConvertBack 메서드는 언제 호출됩니까?

ConvertBack() 메서드가 호출 될 때 궁금합니다. 그 목적은 무엇입니까?

DataGrid 나는 ItemSource이 일부 컬렉션에 바인딩되어 있으며 컬렉션의 항목 중 하나의 속성에 IValueConverter을 구현했습니다. IsReadOnly="True" (DataGrid)을 만들 때 IValueConverter이 구현 된 셀을 두 번 클릭하고 포커스를 변경하면 ConvertBack 메서드가 호출됩니다. 그러나 IsReadOnly="False"을 만들 때 DataGrid과 그 셀에 관계없이 ConvertBack 메서드는 호출되지 않습니다.

DataGrid 세포와 ConvertBack 방법이 IValueConverter 인 것을 설명하십시오.

+1

로 셀 바인딩 포스트해야

msdn를 참조하십시오. OneWay를 명시 적으로 설정하면이 메서드는 호출되지 않습니다. – vorrtex

+0

이 문제도 발생합니다. 'DataTable'에 직접 바인드하면 소스는'CellEditEnding'에서 업데이트됩니다. 다른 종류의 객체에 바인딩하고 바인딩에서 변환기를 사용하여 즉석에서'DataTable'으로 변환하면'ConvertBack'이 호출되지 않습니다. 의미있는 사용자 편집 내용이 소스로 전파되지 않습니다. 내 자신의'DataTable '을 파생시켜 알림 로직을 추가해야하는지 궁금합니다. 내가 해결책을 찾으면 게시 할 것입니다. –

답변

8

"데이터 바인딩 엔진은 바인딩 대상에서 바인딩 원본으로 값을 전파 할 때이 메서드를 호출합니다."

바인딩 모드는 양방향 (TextBox.Text 및 아마 CheckBox.IsChecked에 대한 기본 모드) 때 당신은 그것은 호출되는 valueconverter

+1

소스로 다시 전파하고 싶지 않으면 바인딩을 만드십시오. Mode = OneWay? – steviesama

관련 문제