我在WP8应用程序中使用MVVM。我有一个着陆页(AllProducts.xaml
),显示产品列表。在构造我有this.DataContext = productsViewModel;
我如何刷新页面上的datacontext
在AllProducts.xaml
,我有一个
listbox
结合的productsViewModel
一个属性(ProductList
)。带有ADD按钮的应用程序栏,它将用户转到
AddProduct.xaml
页面。在这里,用户添加一个新的产品,它被保存在数据库中。保存方法被调用后,我有NavigationService.GoBack();
这需要用户到前一页(AllProducts.xaml
)
然而,AllProducts.xaml
没有现在显示新添加的产品。这是显而易见的&我认为这是因为NavigationService.GoBack();
它只是恢复前一页的状态,并没有重新绑定它。
如何重新绑定/刷新页面,以便新添加的产品显示在列表中?
这里是AllProducts.xaml
的XAML代码这势必会的productsViewModel
<phone:LongListSelector ItemsSource="{Binding GetProductList, Mode=TwoWay}"
Name="lls"
ItemTemplate="{StaticResource MyDataTemplateHere}"
toolkit:TiltEffect.IsTiltEnabled="True"
SelectionChanged="lls_SelectionChanged"/>
这里,ProductList
属性我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));
}
}
}
这是我的产品列表类。
public class ProductList
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public int CustomerId { get; set; }
}
但用户在AddProduct.xaml页面中添加新的Product/item。完成保存后,我让他回到AllProducts.xaml页面。在这里我没有看到新添加的项目。我如何让再次启动AllProducts.xaml的数据绑定? 你能解释一下我需要调用RaisePropertyChanged(()=> productsViewModel);如何 ? – NoobDeveloper
养育属性改变将“踢/重新查询绑定”。如果您不知道如何提高属性更改,请查看界面INotifiyPropertyChanged。让你的视图模型实现它。然后提高它的属性,你想绑定重新查询 –
我的viewmodel已经实现INotifiyPropertyChanged。 – NoobDeveloper