我在 WP8 应用程序中使用 MVVM。我有一个AllProducts.xaml
显示产品列表的登录页面()。在构造函数中我有this.DataContext = productsViewModel;
在AllProducts.xaml
,我有一个
listbox
绑定到 的属性(ProductList
)productsViewModel
。带有添加按钮的应用栏,可将用户带到
AddProduct.xaml
页面。在这里,用户添加了一个保存在数据库中的新产品。调用 save 方法后,我NavigationService.GoBack();
将用户带到上一页(AllProducts.xaml
)
但是,AllProducts.xaml
现在确实显示了新添加的产品。这很明显,我认为这是因为NavigationService.GoBack();
它只是恢复上一页的状态而不重新绑定它。
如何重新绑定/刷新页面以使新添加的产品显示在列表中?
AllProducts.xaml
这是绑定到ProductList
属性的 xaml 代码productsViewModel
<phone:LongListSelector ItemsSource="{Binding GetProductList, Mode=TwoWay}"
Name="lls"
ItemTemplate="{StaticResource MyDataTemplateHere}"
toolkit:TiltEffect.IsTiltEnabled="True"
SelectionChanged="lls_SelectionChanged"/>
这是我的productsViewModel
public class productsViewModel: INotifyPropertyChanged
{
private ObservableCollection<ProductList> _productList;
public ObservableCollection<ProductList> GetProductList
{
get
{
var prodList = from p in unitOfWork.ProductRepository.GetAll()
join c in unitOfWork.CustomerRepository.GetAll()
on p.CustId equals c.CustId
select new ProductList { ProductId = p.Id, ProductName = p.ProductName, CustomerId = c.CustId};
_productList= new ObservableCollection<ProductList>(prodList .ToList());
return _productList;
}
set
{
_productList= value;
OnPropertyChanged("GetProductList");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这是我的 ProductList 类。
public class ProductList
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public int CustomerId { get; set; }
}