XML配置中的Castle Windsor动态属性

时间:2010-04-06 22:33:03

标签: c# wpf castle-windsor ioc-container

我正在尝试在ApplicationMainWindow上设置DataContext,这是一个WPF窗口。当我在XML中设置它时,它将DataContext保留为null:

<!-- View Models -->
  <component
            id="mainwindow.viewmodel"
            type="ProjectTracking.ApplicationMainViewModel, ProjectTracking"
            inspectionBehavior="none" lifestyle="transient">
  </component>

  <!-- UI Components -->
  <component
            id="mainwindow.view"
            type="ProjectTracking.ApplicationMainWindow, ProjectTracking"
            inspectionBehavior="none" lifestyle="transient">
    <parameters>
      <DataContext>${mainwindow.viewmodel}</DataContext>
    </parameters>
  </component>

但如果我通过C#这样做就可以了。

        _Kernel.Register(
            ...
            Component.For<ApplicationMainWindow>()
                .DynamicParameters( (k,d) => {
                    d["DataContext"] = k[typeof(ApplicationMainViewModel)];
                    })
        );

我正在实例化我的窗口:

Window window = _Kernel[typeof(ApplicationMainWindow)] as Window;

当我通过xml配置配置windsor时,它会使我的DataContext为NULL,但是当我通过代码配置它时,它就像一个魅力。

我是否需要使用代码将其关闭,或者它是否应该通过XML配置工作?

谢谢, 劳尔

1 个答案:

答案 0 :(得分:1)

您正在定义inspectionBehavior="none",它告诉Windsor忽略属性作为注入可选依赖项的点。删除该属性将恢复默认行为,并将注入datacontext属性。