在WPF MVVM中導入使用MEF時不工作
// 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時不工作