2010-03-26 2 views
0

사용자가 단추를 클릭 할 때 프로그램에 WPF PRISM 모듈을로드하는 상황이 있습니다. 프로그램은 이미로드 된 모듈의 ComboBox SelectedItem 속성을보고 새 모듈의 datacontext에 대한 데이터를 선택합니다. 그런 다음 데이터베이스의 데이터를 새 모듈의 datacontext로로드합니다. 이것은 새로운 모듈의 뷰에서 데이터 바인딩 된 컨트롤의 속성을 설정합니다.WPF PRISM 다시로드 모듈에서보기를 업데이트하지 않습니다.

이제이 모듈을 닫은 다음 다시로드하고 내 콤보 상자에서 다른 항목을 가져 와서 모듈을 다시로드하면 모듈의 컨텍스트가 올바른 데이터로 채워지지만이 모듈의 내 뷰는 업데이트되지 않습니다.

이 모듈의 컨트롤에 바인딩 된 속성에 INotifyPropertyChanged가 구현되었지만 자동으로 업데이트되지 않는 것 같습니다. 이 모듈이 처음로드 된 이후의 이전 데이터는 컨트롤에 남아있는 것처럼 보입니다.

언로드 할 때로드 된 모듈의 datacontext를 NULL로 설정 한 다음 모듈의 뷰를 업데이트 할 때만 다시로드합니다.

그러나 이것은 해킹처럼 느껴지지만 실제로 어떻게되는지는 알 수 없습니다. 누구도이 모듈의 뷰가 다시로드 된 후 컨텍스트의 데이터가 변경 될 때 자체를 업데이트하지 않는 이유를 알고 있습니까?

답변

0

필자의 (아마도 단순한) 이해는 뷰에 DataContext가 변경되었음을 알리지 않는다는 것입니다 (DataContext에없는 속성에만 PropertyChanged가 있음).

그러나 당신은 또한

http://blogs.msdn.com/b/delay/archive/2010/05/11/we-ve-secretly-changed-this-control-s-datacontext-let-s-see-if-it-notices-workaround-for-a-silverlight-data-binding-bug-affecting-various-scenarios-including-datagrid-contextmenu.aspx

보고 할 수 있습니다
관련 문제