我正在尝试使用StructureMap将IOC的WPF示例转换为使用AutoFac
的Silverlight这被证明是非常困难的
我已经定义了一个静态的BootStrapper类
public class BootStrapper
{
public static IContainer BaseContainer { get; private set; }
public static FlexContractStructureViewModel FlexContractStructureViewModel()
{
return BaseContainer.Resolve<FlexContractStructureViewModel>();
}
public static void Build()
{
if (BaseContainer == null)
{
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes();
BaseContainer = builder.Build();
}
}
static BootStrapper()
{
}
}
这是在App.xaml.cs的Application_Startup中初始化的
private void Application_Startup(object sender, StartupEventArgs e)
{
BootStrapper.Build();
this.RootVisual = new MainPage();
}
我已将其中一个视图的DataContext设置为使用我的BootStrapper
DataContext="{Binding Path=FlexContractStructureViewModel,
Source={StaticResource classes:BootStrapper}}"
但是我收到错误找不到名称/密钥类的资源:BootStrapper
我使用的书声明要对App.xaml进行更改以进行添加
但我不能这样做,因为无法识别ObjectDataProvider
我已经尝试了下面的等价物而没有运气
<bs:BootStrapper xmlns:bs="clr-namespace:SLDashboard2.Classes" x:Key="BootStrapper"/>
我认为这可能与BootStrapper静态有关?但我不想不断创建新的容器
有人可以帮忙吗?
保
答案 0 :(得分:1)
错误。您不应该在IoC中注册所有ViewModel吗?然后你将它们注入你的构造函数。它们永远不应该是静态的,我通常不会在我的视图中使用静态资源作为我的datacontext