绑定ListboxItems未更新

问题描述:

我有一个Listbox与数据绑定到项目的付款。当我添加新的付款时,付款将被添加到列表中。添加页面也用于编辑付款。该事件被调用,在调试模式下,我可以看到我付款的变化值,但ListBoxItem不会被更新。在加载页面的最后一个事件将被调用,更新列表框项目:绑定ListboxItems未更新

GlobalNotifier.OnPaymentAdded(); 

的OnPaymentAdded调用只通知有关属性更改的方法:

OnNotifyPropertyChanged("Project"); 

的代码列表框:

<ListBox Name="ListPayments" ItemsSource="{Binding Project.Payments}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid Margin="10,5,10,0"> 
       <StackPanel> 
        <TextBlock FontSize="30" Text="{Binding Name}" /> 
       </StackPanel> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

为什么要添加新项目,但现有项目未更新?任何想法?

发生了什么事情,虽然Project对象被更新,但Payments对象(可能是List)不是。

什么你可能尝试如下:

  1. 每当List -object被操纵(编辑项目中去除/加入),火PropertyChanged -event为Projects
  2. 你也可以将List<Project>切换到ObservableCollection<Project>,这肯定会解决您的问题
  3. 如果切换到ObservableCollection不适合您,请为实施替代在显示列表的视图中,并从那里调用PropertyChanged -events(项目,付款等)。

其中任何一种都可以解决您的问题 - 这都是品味和偏好的问题。

+0

付款是ICollection类型。将付款切换到ObservableCollection解决了问题。谢谢! – 2012-07-24 14:28:50

听起来像你的项目属性不是依赖项属性,或没有人触发propertychanged为他们。

+0

我在OnNotifyPropertyChanged上有一个断点,它在添加和编辑时被调用。但项目不会更新。我也尝试使用自己的propery _Payment_作为指向Project.Payments的ItemsSource,但没有任何更改。你对_dependency properties_有什么意思? – 2012-07-23 18:05:08

+0

依赖项属性是依赖于其他变量的属性 - 或者一般的对象。这里有很多关于这些属性的优秀文章,谷歌将成为你的朋友。 – 2012-07-24 11:16:45

+0

你能发布你的物品类的来源吗? – Zak 2012-07-24 12:19:35