0

我正在尝试使用 AutoFac 将使用 StructureMap 的 IOC 的 WPF 示例转换为 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 静态有关?但我不想不断创建新的容器

有人可以帮忙吗?

保罗

4

1 回答 1

1

错误的。您不应该在 IoC 中注册所有 ViewModel 吗?然后你将它们注入你的构造函数。它们永远不应该是静态的,在我看来,我通常不使用静态资源作为我的数据上下文

于 2012-08-26T20:33:25.530 回答