我在我的WPF项目中实现了推荐的启动,并遇到了一些我遇到的小问题,但想让您知道,要么纠正或提供反馈。
在
之后的runapplication中 var app = new App();
我需要添加:
app.InitializeComponent();
对于要加载的app.xaml中定义的资源词典。
进一步,因为我将容器配置为启动视图,该视图依赖于这些资源,我无法调用container.verify()(由于似乎尝试实例化视图),直到加载这些资源后,因此第一个现在的运行行是:
var app = new App();
app.InitializeComponent();
container.Verify();
var mainWindow = container.GetInstance<MainWindow>();
...(more init stuff)
app.Run(mainWindow);
使用此程序,我的程序启动并按照预期的方式工作。
发布答案,因为我遇到了同一问题,并且注意到用户确实确实在简单注射器上弄清楚了这个问题,github问题论坛:wpf Integration#493
请参阅下面的评论,以下来自简单喷油器WPF集成指南的代码的代码。
program.cs
public class Program
{
[STAThread]
private static void Main()
{
var container = Bootstrap();
// RunApplication method placed here for simplicity
try
{
var app = new App();
app.InitializeComponent(); // This is needed to utilize Application.Resources XAML in MainWindow
container.Verify(); // Verify after ResourceDictionaries are loaded from Application.Resources XAML
var mainWindow = container.GetInstance<MainWindow>();
app.Run(mainWindow);
}
catch (Exception exception)
{
// TODO: Log exception
}
}
private static Container Bootstrap()
{
// Create the container
var container = new Container();
// Register types
// Register windows and view models:
container.Register<MainWindow>();
return container;
}
}