Я занимаюсь разработкой приложения для Windows Phone 7 и использую шаблон MVVM. У меня есть необходимость передать параметр в конструктор ViewModel для страницы. Все мои данные и их привязка выполняются в XAML. Благодаря моим исследованиям я понял, что мне нужно сделать это с помощью инжектора зависимостей, такого как NInject.
Вот маленькая деталь о том, что происходит:
У меня есть страница с ListPicker, которая перечисляет различные задачи. Каждая задача имеет уникальный TaskID. Когда элемент выбран, мне нужно открыть другую страницу, которая покажет детали выбранных задач. Моя ViewModel и привязка все сделаны и работают, если я использую статический TaskID в ViewModel, но, конечно, мне нужно использовать переменную.
Я настроил NInject в проекте и различные необходимые классы, такие как ViewModelLocator и мой NInjectModule, как показано здесь:
public class LighthouseNInjectModule : NinjectModule
{
public override void Load()
{
this.Bind<TaskViewModel>().ToSelf().WithConstructorArgument("TaskID", 2690);
}
}
Обратите внимание, что я жестко запрограммировал здесь TaskID и, используя этот код, это значение правильно вставляется в мой конструктор. Конечно, это жестко запрограммировано, и мне нужно получить TaskID для выбранного элемента ListPicker. Я знаю, как получить выбранный идентификатор из ListPicker, но как сделать так, чтобы NInject знал об этом, чтобы при запуске моего конструктора класса он имел правильное значение?
Вот базовое определение моего класса ViewModel, показывающее использование атрибута Injector.
public class TaskViewModel : INotifyPropertyChanged
{
[Inject]
public TaskViewModel(int TaskID)
{
//run function to get data using TaskID
}
}