在WPF MVVM中导入使用MEF时不工作
Posted huaigongzi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WPF MVVM中导入使用MEF时不工作相关的知识,希望对你有一定的参考价值。
我想做一个测试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时不工作的主要内容,如果未能解决你的问题,请参考以下文章
用于模块化 MVVM 应用程序的 Prism + MEF 替代品 [关闭]
带有 Prism 4 的新 LOB Silverlight 4(mvvm、mef、unity)