WP8 앱에서 MVVM을 사용하고 있습니다. 제품 목록을 표시하는 방문 페이지 (AllProducts.xaml
)가 있습니다. 생성자에서 제가페이지의 datacontext를 새로 고침하는 방법
AllProducts.xaml
에서
this.DataContext = productsViewModel;
가 나는 productsViewModel
의 속성 (ProductList
)에
listbox
바인드를 갖는다.사용자를
AddProduct.xaml
페이지로 연결하는 추가 버튼이있는 앱 표시 줄입니다. 여기서 사용자는 데이터베이스에 저장되는 새 제품을 추가합니다. Save 메서드를 호출 후, 나는 이전 페이지 (AllProducts.xaml
)
는 그러나, AllProducts.xaml
이제 새로 추가 된 제품을 보여줍니다 않습니다에 사용자가 걸립니다 NavigationService.GoBack();
있습니다. 이것은 분명하다 & 나는 단지 이전 페이지의 상태를 복원하고 다시 바인딩하지 않기 때문에 NavigationService.GoBack();
라고 생각합니다.
페이지를 리바 인/새로 고침하여 새로 추가 된 제품이 목록에 표시되도록하려면 어떻게해야합니까?
여기 여기 productsViewModel
<phone:LongListSelector ItemsSource="{Binding GetProductList, Mode=TwoWay}"
Name="lls"
ItemTemplate="{StaticResource MyDataTemplateHere}"
toolkit:TiltEffect.IsTiltEnabled="True"
SelectionChanged="lls_SelectionChanged"/>
의 ProductList
속성에 바인딩 AllProducts.xaml
의 XAML 코드는 여기 내 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