棱镜4飞溅屏幕与MEF引导程序

mat*_*ecj 7 prism mef screen splash-screen

我有一个使用MEF引导程序的prism 4应用程序.我已经从引导程序实现了一个启动画面,并希望在模块管理器加载app/modules时为用户提供模块信息(当它们被加载时).

我想我需要在模块管理器中订阅LoadModuleCompleted事件.我无法做到这一点,因为当我使用MEF引导程序中的容器解析模块管理器时,PRISM框架调用OnImportsSatisfied来加载所有模块.(这是为时已晚,因为我想听听这个).

如何显示带有显示模块信息/进度的进度条的启动窗口?

非常感谢!

Sco*_*ner 0

如果您控制导入到项目中的组成部分,则可以IPartImportsSatisfiedNotification在每个部分上实现并让它们向某些导入的进度监视器类报告自己的进度:

public interface IProgressMonitor
{
    void ReportComposed(Type type);
}

[Export(typeof(IProgressMonitor))]
public class ProgressMonitor : IProgressMonitor
{
    public ProgressMonitor()
    {
        var loadHeuristic = this.GetPreviousLoadProgress();
        if (loadHeuristic == null)
        {
            // Never been loaded before, so it's unclear how long it will take
            // Set indeterminate progress bar.
        }
        else
        {
            // Use previous load times to estimate progress.
            _loadHeuristic = loadHeuristic;
            _progress = 0;
        }
    }

    public void ReportComposed(Type type)
    {
        if (_loadHeuristic != null)
        {
            this.IncrementProgress();
        }
    }
}

[Export]
public class FooExport : IPartImportsSatisfiedNotification
{
    [Import]
    internal IProgressMonitor ProgressMonitor { get; set; }

    public void OnImportsSatisfied()
    {
        this.ProgressMonitor.ReportComposed(typeof(FooExport));
    }
}
Run Code Online (Sandbox Code Playgroud)