View가 아닌 ViewModel에서 event 처리를 하면서 page navigation이 필요할 때가 있음.
하지만 Navigation 객체에는 View에 있으므로
View의 INavigation type 객체를 ViewModel로 넘겨서 이를 사용하기 하는 방법이 필요.
이렇게 되면 XAML에서 BindingContext로 ViewModel을 지정하는 것이 아니라
Code 상에서 BindingContext를 지정하면서 인자로 Navigation 객체를 넘겨야 한다.
자세한 것은 아래 링크 참고
http://www.johankarlsson.net/2014/09/navigation-from-viewmodel-using.html
public class MainPageViewModel : INotifyPropertyChanged
{
private PersonRepository _repository;
private INavigation _navigation; // HERE
public MainPageViewModel (INavigation navigation) // HERE
{
_navigation = navigation; // AND HERE
// This should be injected
_repository = new PersonRepository();
// Populate the ViewModel
var person = _repository.GetPerson(42);
Name = person.Name;
Updated = person.Updated;
}
{
private PersonRepository _repository;
private INavigation _navigation; // HERE
public MainPageViewModel (INavigation navigation) // HERE
{
_navigation = navigation; // AND HERE
// This should be injected
_repository = new PersonRepository();
// Populate the ViewModel
var person = _repository.GetPerson(42);
Name = person.Name;
Updated = person.Updated;
}
}
댓글 없음:
댓글 쓰기