当我在子窗口中添加新产品时,我想更新n通知父窗口中的现有产品列表。我已将Observable集合订阅到NotifyPropertyChanged但仍然没有使用新产品更新列表。我需要再次从数据库中获取整个产品列表以刷新它。
private ObservableCollection<Product> _productsList;
public ObservableCollection<Product> ProductsList
{
get {return _productsList ;}
private set {
_productsList = value;
NotifyPropertyChanged("ProductsList");
}
}
public void AddNewProduct()
{
Window_NewProduct newProduct = new Window_NewProduct();
newProduct.ShowDialog();
}
请帮帮我。谢谢。
答案 0 :(得分:0)
更换NotifyPropertyChanged
后,您的ObservableCollection
会被触发。您需要注册CollectionChanged
财产的ProductsList
个事件。请参阅:MSDN。
答案 1 :(得分:0)
添加新产品的逻辑在哪里做数据库? 在Window_NewProduct?
如果是这样,产品将添加到数据库,但不会添加到ProductsList。这里的问题是如何刷新ProductsList,但是要正确地将新项添加到此列表中。您可以尝试从Window_NewProduct返回新添加的产品并将其添加到ProductsList。因为它是ObservableCollection,所有刷新应该自动执行。
这里有一些伪代码:
public void AddNewProduct()
{
Window_NewProduct newProductWindow = new Window_NewProduct();
if(newProductWindow.ShowDialog() == OK)
{
ProductsList.Add(newProductWindow.NewlyAddedProduct);
}
}
更新1:
除非我们不知道Window_NewProduct的外观,否则很难给出解决方案。 但是,我可以假设你有类似的方法:
void SaveProduct()
{
var product = new Product();
Database.Save(product);
}
你可以这样做:
public Product NewlyAddedProduct{get;private set;} //public property of Window
public void SaveProduct()
{
var product = new Product();
Database.Save(product);
NewlyAddedProduct = product;
}