2011-06-20 31 views
7

Bir MEF bootstrapper kullanarak bir prizma 4 uygulamasına sahibim. Önyükleyiciden bir sıçrama ekranı uyguladım ve modül yöneticisi uygulamayı/modülleri yüklerken kullanıcıya modül bilgisi (yüklendikleri gibi) sağlamak istiyorum.Prism 4 MEF bootstrapper ile Splash Screen

Modül yöneticisinde LoadModuleCompleted olayına abone olmam gerektiğini düşünüyorum. Bunu yapamam çünkü modül yöneticisini MEF önyükleyicisindeki kapsayıcıyla çözdüğümde, PRISM çerçevesi tüm modülleri yükleyen OnImportsSatisfied yöntemini çağırır. (Bunu dinlemek istediğim için bu çok geç).

Sıçrama penceresini modül bilgisi/ilerleme durumunu gösteren bir ilerleme çubuğu ile nasıl görüntüleyebilirim?

Çok teşekkürler! Projeniz aktarılır oluşan parçaların kontrol ederse

+0

Dışarı kontrol edebilirsiniz [Bu proje ] (http://prismsplashscreen.codeplex.com). Bir Unity bootstrapper kullanıyor, ancak yararlı bulabilirsin. –

cevap

0

, her on IPartImportsSatisfiedNotification uygulamak ve onları bazı ithal ilerleme monitör sınıfına kendi ilerleme raporu sahip olabilir:

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)); 
    } 
}