我在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