Я работаю над приложением WP7 .-
Сводка
Я хочу показать страницу (1) со списком друзей, если коснулся друга, яПокажет страницу (2) с этой информацией о друге, а также список фильмов, которые этот друг смотрел.Затем, если я нажму на один из фильмов, я получу страницу (3) с информацией о фильме.Я пытаюсь использовать скороговорку MVVM с MVVM Light Toolkit.
Служба :
На каждой странице мне нужно будет вызывать API
Страница 1: /friend
возвращает список друзей
Страница 2: /friend/5436
возвращает фильмы, просмотренные этим другом
Страница 3: /movie/87968
возвращает информацию о фильме
Что я сделал
Я создаю класс друга, у которого есть ObservableCollection of Movies
public class Friend: ObservableObject
{
public Friend(){}
public ObservableCollection<Movie> Movies{ get; set; }
}
Также создаю класс Movie с информацией о фильме.
Также модель представления, чтобы обернуть класс друга
public class FriendViewModel : ViewModelBase
{
public Friend Model
{
get;
private set;
}
public FriendViewModel(Friend model)
{
Model = model
}
}
Затем модель представления, чтобы собрать всех друзей
public class FriendListViewModel : ViewModelBase
{
// To store the Friend service returned by the locator
private readonly IFriendService _friendService;
// To store the friends. It should be bind the the listbox in the view
public ObservableCollection<FriendViewModel> Friends
{
get;
private set;
}
/// <summary>
/// Initializes a new instance of the FriendListViewModel class.
/// </summary>
public FriendListViewModel(IFriendService friendService)
{
// The data service
_friendService = friendService;
// Get all the friends and add them to the Friends collection
Friends = new ObservableCollection<FriendViewModel>();
_friendService.GetFriends((result, error) =>
{
if (error != null)
{
MessageBox.Show(error.Message);
return;
}
if (result == null)
{
MessageBox.Show("Nothing found");
return;
}
foreach (var friend in friends)
{
Friends.Add(new FriendViewModel(friend));
}
});
}
}
Каждая вещь работает с локатором, который является статическим ресурсом наApp.xaml и используемый в представлении, где я перечисляю друзей в качестве datacontext для представления
Это локатор
public class FriendViewModelLocator
{
static FriendViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IFriendService, Design.DesignFriendDataService>();
}
else
{
SimpleIoc.Default.Register<IFriendService, FriendService>();
}
SimpleIoc.Default.Register<FriendListViewModel>();
}
/// <summary>
/// Gets the Main property.
/// </summary>
public FriendListViewModel FriendList
{
get
{
return ServiceLocator.Current.GetInstance<FriendListViewModel>();
}
}
}
Вопрос
Первая страницаработает, я получаю список друзей и могу отображать их.Также первая страница смешивается.Но тогда я не знаю, как перейти к следующим страницам.Я думал, что я должен передать тот же FriendViewModel
Я нажал на страницу 2 и вызвать API, чтобы получить список фильмов.Но в некотором роде это исключено из модели «Друг», я не могу заполнить коллекцию «Фильмы» в «Друге».Должен ли я создавать разные обертки viewmodels для каждой страницы.Как настроить локатор, чтобы иметь возможность получать фильмы и информацию о фильме для страницы 3.
любые идеи, мысли, ресурсы для проверки?