使用的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