【发布时间】:2014-11-25 07:38:51
【问题描述】:
我在 SimpleInjector 和 Caliburn Micro 2.0 上遇到了一个奇怪的问题……我遇到了一个异常告诉
"Cannot locate resource 'views/simpleviewmodel.xaml'."}
资源设置为
构建操作:页面
如果我将其设置为资源(丢失 .cs),它会加载...
我的引导程序是
public class MefBootstrapper : BootstrapperBase
{
public static readonly Container ContainerInstance = new Container();
public MefBootstrapper()
{
Initialize();
}
protected override void Configure()
{
ContainerInstance.Register<IWindowManager, WindowManager>();
ContainerInstance.RegisterSingle<IEventAggregator, EventAggregator>();
ContainerInstance.Register<SimpleViewModel, SimpleViewModel>();
ContainerInstance.Verify();
}
protected override object GetInstance(Type serviceType, string key)
{
return ContainerInstance.GetInstance(serviceType);
}
protected override IEnumerable<object> GetAllInstances(Type serviceType)
{
return ContainerInstance.GetAllInstances(serviceType);
}
protected override void BuildUp(object instance)
{
ContainerInstance.InjectProperties(instance);
}
protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<SimpleViewModel>();
}
}
SimpleViewModel 真的很简单
public class SimpleViewModel : Screen
{
}
视图也很简单
<UserControl x:Class="SimpleInjector.Views.SimpleView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock Text="IT works!" Foreground="Red"></TextBlock> </Grid>
</UserControl>
我有uploaded 一个项目来自己测试它...如果在 MefBoostrapper 中您评论了整个引导程序然后取消注释另一个它可以工作...所以我认为这是与 SimpleInjector 相关的问题
任何帮助将不胜感激 谢谢
【问题讨论】:
-
请注意,从 Simple Injector 2.6 及更高版本开始,
InjectPropertiesis deprecated。请阅读this q/a
标签: wpf dependency-injection caliburn.micro simple-injector