2013-05-29 3 views
2

이상한 문제가 있습니다. WPF 화면에 확장형 TextBox이 일부있는 경우가 있으며이 속성은 뷰 모델의 속성에 바인딩됩니다. 데이터 컨텍스트가 변경되면 변환이 다시 평가됩니다. 다시 평가하면 내 확장 TextBox에 새 데이터 컨텍스트가 있지만 BindingOperations.GetBindingExpression(textBox, dpproperty).DataItem은 여전히 ​​이전 데이터 컨텍스트입니다. 내가 만든 변환은 데이터 컨텍스트를 변경 한 후에 너무 일찍 올 것입니까? 일반적으로 데이터 컨텍스트는 전체 화면으로 변경되지 않으므로 바인딩을 다시 평가해야합니까? 감사합니다.데이터 컨텍스트 변경 후 바인딩 문제가 발생했습니다.

답변

0

글쎄, 문제는 뷰의 바인딩이 DataContext이 변경되었음을 알지 못한다는 것입니다. 그래서 그들은 처음에 할당 된 VM을 여전히보고 있습니다.

따라서 가장 좋은 방법은 다른 인스턴스를 할당하는 대신 DataContext으로 할당 된 VM의 데이터를 변경하는 것입니다. VM은 INotifyPropertyChanged을 구현해야하기 때문에 바인딩은 자동으로 업데이트됩니다.

+0

데이터 컨텍스트가 변경되면 바인딩이 전체 트리로 새로 고쳐 지지만 제 경우 확장 된 텍스트 상자의 템플릿에 일부 바인딩이 있습니다. 여기에 datacontext 컨트롤이 데이터 컨텍스트 이벤트를 트리거 한 후 약간의 지연으로 변경되므로 바인딩이 내 exteded 텍스트 상자 템플리트의 datacontext가 실제로 변경되기 전에 바인딩이 갱신되므로 바인딩이 여전히 이전 datacontext를 가리키고 있습니다 – florian2905

관련 문제