我有两个观点
添加视图:包含一些文本框和一个将项添加到存储库的按钮
我现在想要的是通知概述视图的IObservableCollection项目已添加到xml文件中。
我的第一次尝试如下:
public IObservableCollection<Book> BookList
{
get
{
this.LoadBookList();
return this.bookList;
}
set
{
this.bookList = value;
this.NotifyOfPropertyChange(() => this.BookList);
}
}
this.LoadBookList()
从存储库初始化this.bookList
。
这当然有效(该项目已添加到xml文件中,因此存储库可以获取并设置书单),但存在以下问题:
我在数据网格的每一行都有一个Delete-Button
,绑定到DeleteItem(Book book)
public void DeleteItem(Book book)
{
var bookToRemove = this.BookList.Single(b => b.Equals(book));
this.BookList.Remove(bookToRemove);
this.BookRepository.WriteBookList(this.BookList);
}
但是通过this.LoadBookList();
- 属性中的BookList
调用,当调用this.BookRepository.WriteBookList(this.BookList);
一种解决方案是在this.bookList
- 方法中使用支持属性DeleteItem(...)
......但这是正确的方法吗?
是否有更好/更漂亮/更清洁的方法?
提前致谢
答案 0 :(得分:1)
仅在this.bookList
为空时加载列表。
最有可能的是,您将在LoadBookList()
内填写bookList。
因此,将getter修改为:
if(this.bookList==null)
this.LoadBookList();
return this.bookList;
注意:在LoadBookList()中初始化booklist。