1. 程式人生 > >在WPF MVVM中導入使用MEF時不工作

在WPF MVVM中導入使用MEF時不工作

containe exp project osi vat ica directory con rec

我想做一個測試MEF WPF。 我使用一個項目作為接口:

// Project name MEFWpfTest.Interfaces
public interface IAppViewModel
{
string Name { get; set; }
}
然後創建一個新項目來實現這個接口:

// Project name MEFWpfTest.ViewModels
[Export("AppViewModel")]
public class AppViewModel : IAppViewModel
{
public string Name { get; set; }
}
在App.xaml。 cs,WPF項目,我試著在MEF組成部分:

// Project name MEFWpfTest
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
var aggregateCatalog = new AggregateCatalog();
Assembly assembly = Assembly.GetExecutingAssembly();
aggregateCatalog.Catalogs.Add(new AssemblyCatalog(assembly));

    var directoryPath = Path.GetDirectoryName(assembly.Location);

    if (directoryPath != null)
    {
        aggregateCatalog.Catalogs.Add(new DirectoryCatalog(directoryPath, $"MEFWpfTest.*.dll"));

    }

    CompositionContainer Container = new CompositionContainer(aggregateCatalog);
    Container.ComposeParts(this);

    MainWindow w = new MainWindow();
    w.Show();
}

}
然後在MainWindow.xaml。 cs,我使用一個IAppViewModel進口:

// Project name MEFWpfTest
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

[Import("AppViewModel")]
public Interfaces.IAppViewModel AppVM { get; set; }

private void Window_Loaded(object sender, RoutedEventArgs e)
{ // I set a break point here.

}

}
當我運行這個應用程序,我發現AppVM是null。 很好,當我在一個裝配做同樣的事情。 MEFWpfTest已經MEFWpfTest引用。 接口和MEFWpfTest.ViewModels。

在WPF MVVM中導入使用MEF時不工作