使用的Windows Phone 8C# - 實施INotifyPropertyChanged的到的ObservableCollection(解決)
所以我一直在ObservableCollection
和Listboxes
玩耍,並結合他們,但我從來沒有與INotifyPropertyChanged
各地播放。我聽說這會使很多事情變得更容易,即自動檢測ObservableCollection
中的內容是否發生了變化。
如果它不是過分的要求有可能是有人向我提供具有這些功能的一個簡單的代碼示例:
- 添加
- 刪除
所以基本上只是將項目添加到ObservableCollection和一個按鈕到從ObservableCollection刪除所選項目,這將更新ObsevableCollection。
這只是我從來沒有明白INotifyPropertyChanged
如何工作。在線樣本似乎不適合我,我所要求的只是一個簡單的例子。
UPDATE
我已經成功地添加的ObservableCollection。
public partial class MainPage : PhoneApplicationPage
{
public AddItems LoadItems = new AddItems();
public MainPage()
{
InitializeComponent();
listBox.DataContext = LoadItems;
}
public class Items
{
public string ItemTitle { get; set; }
public string ItemBody { get; set; }
public string FolderID { get; set; }
}
public class AddItems : ObservableCollection<Items>
{
public AddItems()
{
Add(new Items() { ItemTitle = "Book", ItemBody = "A simple Book.", FolderID = Count.ToString() });
Add(new Items() { ItemTitle = "Paper", ItemBody = "Something to write on.", FolderID = Count.ToString() });
Add(new Items() { ItemTitle = "Pen", ItemBody = "Something you use to write.", FolderID = Count.ToString() });
}
}
private void Delete_Click(object sender, RoutedEventArgs e)
{
}
}
現在,如果我想從列表框中刪除項目,我該怎麼做?我試過了:
LoadItems.Remove(listBox.SelectedItem);
但是沒有奏效。我如何刪除選定的項目並讓ObservableCollection自動檢測到該更改並進行刷新,以便它不會顯示已刪除的項目?
謝謝!
試試這種方式:'LoadItems.RemoveAt(listBox。SelectedIndex)' – har07
@ har07由於我使用的是contextMenu(用戶必須點擊並按住以調出contextMenu),我必須單擊ListBox項然後將其刪除。有沒有辦法讓我可以只持有列表框項目,然後點擊刪除將刪除該項目,而不是點擊列表框項目,然後刪除它? –
是的,這是常見的情況,常見的錯誤是人們將ContextMenu添加到ListBox而不是ListBoxItem。檢查此參考以實現:1. [更簡單的方式](http://stackoverflow.com/a/14168934/2998271),2. [更多MVVM兼容方式](http://stackoverflow.com/a/14168934/ 2998271) – har07