NInject:将参数发送到ViewModel类构造函数

时间:2011-07-23 21:13:20

标签: xaml mvvm ninject

我正在开发一个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
    }
}

1 个答案:

答案 0 :(得分:1)

WithConstructorArgument有另一个过度加载,接受惰性评估Func<Context, object>