2016년 11월 1일 화요일

Xamarin.forms 사용 중 ViewModel에서 page navigation이 필요한 경우

Xamarin.forms를 사용 하여 MVVM pattern을 구현하다보면
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;
        }
    }

댓글 없음:

댓글 쓰기