我正在尝试在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配置工作?
谢谢, 劳尔
答案 0 :(得分:1)
您正在定义inspectionBehavior="none"
,它告诉Windsor忽略属性作为注入可选依赖项的点。删除该属性将恢复默认行为,并将注入datacontext属性。