Динамическое свойство Castle Windsor в XML-конфигурации - PullRequest
0 голосов
/ 07 апреля 2010

Я пытаюсь установить DataContext в ApplicationMainWindow, который является окном WPF. Когда я настраиваю его в XML как, он оставляет DataContext пустым:

<!-- 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;

Когда я настраиваю windsor через конфигурацию xml, он оставляет мой DataContext NULL, но когда я настраиваю его через код, он работает как шарм.

Нужно ли мне использовать код для этого или он должен работать через XML-конфигурацию?

Спасибо, Raul

1 Ответ

1 голос
/ 07 апреля 2010

Вы определяете inspectionBehavior="none", который говорит Windsor игнорировать свойства как точки для введения необязательных зависимостей.Удаление этого атрибута восстановит поведение по умолчанию, и свойство datacontext будет введено.

...