2011-05-26 59 views
3

我有一个“MainModelView”,它实现了INotifyPropertyChanged,并且有一个属性显示ObservableCollection<T>,名为ExposedCollection。在我们的MainPage.xaml中,我们有一个ListBox,它的ItemsSource应该被绑定到MainModelView.ExposedCollection如何确认在XAML中绑定了哪些属性?

MainModelView使REST调用在后台填充ExposedCollection。当WebClient完成它的工作时,ASyncCallback调用NotifyPropertyCHanged,它检查PropertyChanged事件是否为空,如果没有,则调用它。漂亮的基本东西

问题是,ListBox似乎永远不会绑定到ExposedCollection。我在NotifyPropertyChanged的空检查上设置了一个断点,并且PropertyChanged上没有任何侦听器。

我试过实例化PhoneApplicationPage.Resources中的MainViewModel,PhoneApplicationPage.DataContextPhoneApplicationFrame.DataContext在App.xaml中。在所有情况下,PropertyChanged事件仍然为空。我在这里错过了什么?

<phone:PhoneApplicationPage.DataContext> 
    <gmvm:MainViewModel x:Name="MainViewModel" /> 
</phone:PhoneApplicationPage.DataContext> 
... 
<ListBox x:Name="MyListBox" ItemsSource="{Binding ExposedCollection}" Margin="0,20,-12,0"> 
..... 
</Listbox> 
+1

绑定错误显示在Visual Studio的输出窗口中。当您运行应用程序时,您是否看到任何绑定错误? – Andy 2011-05-26 22:42:31

+0

没有错误,但是你的评论导致我进行了一段史诗级的调试过程,导致了代码的黑暗角落,原来的集合引用留给了可怕的垃圾回收。如果你发布一个答案,我会标记它。 – 2011-05-26 22:53:27

回答

1

您应该检查Visual Studio中的输出窗口,以查看运行您的应用程序时是否有任何绑定错误。

1

我不知道这是否有差别,但你尝试过实施ExposedCollection作为一个依赖属性?如果你这样做,它可能不需要实现INotifyPropertyChanged接口,并帮助绑定到列表框? Crazier的东西已经为我工作了...

+0

还没有探索依赖属性,但我会在我们的里程碑之后给出一个镜头。感谢您的建议! – 2011-05-27 13:56:36