2012-07-23 40 views
1

我有一個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> 

爲什麼要添加新項目,但現有項目未更新?任何想法?

回答

0

發生了什麼事情,雖然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

0

聽起來像你的項目屬性不是依賴項屬性,或沒有人觸發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