【发布时间】:2014-12-02 20:03:42
【问题描述】:
在我的 ShellViewModel 中,我有以下使用 Linq 和 EntityFramework 进行查询的函数。这里的目标是将 POCO 转换为 ViewModel,并使用 CM 将生成的 ViewModel 绑定到 ShellView 中的 ListBox。
下面是代码的部分列表。一切正常。但是,我现在需要每个 ItemViewModel 能够在发生特定操作时通知 ShellViewModel。如何将 CM 的 EventAggregator 放入每个 ItemViewModel?所有的 EventAggregator 示例都通过 ViewModel 的 Ctor 进行依赖注入显示了这种情况。在实例化 ViewModel 时如何使依赖注入工作,如下面的 GetData() 所示?
[Export(typeof(ShellViewModel))]
public class ShellViewModel : Conductor<object>, IHandle<UserPasswordChanged>
{
private void GetData()
{
var query = _EfDataContext.Items
.Where(x => (x.CreatedDtm > DayBeginning && x.CreatedDtm <= NowDtm));
//Create a list of ItemViewModels for Caliburn.Micro to Bind
//How can EventAggregator be injected into ItemViewModel when
//creating ViewModels this way?
this.Items = new BindableCollection<ItemViewModel>(query
.Select(x => new ItemViewModel
{
Item = x
}));
}
[ImportingConstructor]
public ShellViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
_eventAggregator.Subscribe(this);
IsDeveloperMode = false;
}
}
【问题讨论】:
标签: wpf mvvm caliburn.micro