WPF PRISM重新加载模块不更新视图

时间:2010-03-26 14:06:43

标签: wpf prism data-binding

我有一种情况,当用户单击按钮时,我将WPF PRISM模块加载到程序中。该程序查看已加载模块上的ComboBox SelectedItem属性,以选择新模块的datacontext的数据。然后,它将数据从数据库加载到新模块的datacontext中。这将在新模块的视图上设置我的数据绑定控件的属性。

现在当我再次关闭(卸载)此模块,然后从我的Combobox中取出另一个项目并重新加载模块时,模块的上下文将填充正确的数据,但我的模块中的视图未更新。

我在绑定到此模块上的控件的属性上实现了INotifyPropertyChanged,但它们似乎不会自动更新。从第一次加载此模块开始,旧数据似乎保留在控件中。

只有当我在卸载时将加载模块的datacontext设置回NULL,然后重新加载它才会更新模块的视图。

然而,这感觉就像是黑客,而不是它应该是怎样的。当重新加载后上下文中的数据发生变化时,有没有人知道为什么这个模块的视图似乎没有自我更新?

1 个答案:

答案 0 :(得分: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