MVVM + MEF:父视图模型使用MEF填充子视图模型

时间:2014-04-12 05:32:10

标签: mvvm mef

我之前已经问过这个问题,但它一般都是这样,所以我无法得到答案,所以我会在这里询问具体要点:

根据以下代码,我想使用MEF而不是使用(new)运算符重新编写此代码,但我遇到了以下需要解答的问题:

1-CountryViewModel(在构造函数中)如何创建具有参数构造函数的子RegionViewModel的集合并通过Model对象填充它?我尝试使用GetExportedValues<>()但没有成功,因为我无法将参数传递给构造函数,我无法使用linq查询来填充RegionViewModel,如代码中所示。

2-RegionViewModel如何在LoadChildren方法中加载StateViewModel的子视图模型集合   使用foreach块还使用MEF而不是new运算符?我也尝试使用GetExportedValues<>(),但我无法将参数传递给子视图模型

public class CountryViewModel
{
    readonly ReadOnlyCollection<RegionViewModel> _regions;
    public ReadOnlyCollection<RegionViewModel> Regions
    {
        get { return _regions; }
    }

    //---------------------------------------------------------
    public CountryViewModel(Region[] regions)
    {
        _regions = new ReadOnlyCollection<RegionViewModel>(
            (from region in regions
             select new RegionViewModel(region))
            .ToList());
    }

}

public class RegionViewModel : TreeViewItemViewModel
{
    readonly Region _region;

    public RegionViewModel(Region region) 
        : base(null, true)
    {
        _region = region;
    }

    public string RegionName
    {
        get { return _region.RegionName; }
    }

    protected override void LoadChildren()
    {
        foreach (State state in Database.GetStates(_region))
            base.Children.Add(new StateViewModel(state, this));
    }
}

0 个答案:

没有答案