我正在开发一个Windows Phone 7应用程序,并且正在使用MVVM模式。我需要将参数传递给ViewModel的构造函数以获取页面。我的所有datacontexts和绑定都在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并使用此代码将此值正确地注入到我的构造函数中。当然,这是硬编码的,我需要获取所选ListPicker项的TaskID。我知道如何从ListPicker中获取所选的ID但是如何让NInject知道它,所以当我的类构造函数运行时它将具有正确的值?
以下是我的ViewModel类的基本定义,显示了Injector属性的使用。
public class TaskViewModel : INotifyPropertyChanged
{
[Inject]
public TaskViewModel(int TaskID)
{
//run function to get data using TaskID
}
}
答案 0 :(得分:1)
WithConstructorArgument
有另一个过度加载,接受惰性评估Func<Context, object>
。