Что лучший способ состоит в том, чтобы прозрачно ввести зависимости (использующий контейнер МОК) к пользовательским элементам управления в WPF?
Я предполагаю, что пользовательские элементы управления являются частью XAML для окна или других пользовательских элементов управления. Также я думаю родитель (кто бы ни это), не должно быть ответственно за это. Решение для того, чтобы вручную ввести зависимости от родительских взглядов, не достаточно чистых для меня. Я не хочу управлять зависимостями своих компонентов явно как он voilates идея МОК.
Какое-либо событие, которое генерируется, когда логическое дерево создается так, я могу прервать его и ввести мои зависимости?
Править: зависимостями я также имею в виду ViewModel, Контроллер, Предъявителя (независимо от того, что шаблон используется),
Спасибо, Andrey
Один из возможных способов решения проблемы - использовать подход «сначала модель просмотра» и использование соглашений, а не конфигурации.
Лучший способ справиться с зависимостями в WPF - это следовать шаблону MVVM .
Короче говоря, вы не вставляете зависимости непосредственно в пользовательские элементы управления (представление), а скорее в их DataContext (ViewModel).
Я использовал общий класс приложения, который внедряет зависимости в ваш класс модели представления (при условии, что вы используете шаблон проектирования MVVM?) - используйте DI контейнер, такой как Unity. См. WPF Application Framework ( https://github.com/jbe2277/waf ), в котором содержатся образцы именно такого сценария, который вы описываете.
FrameworkElement имеет событие Initialized, которое вы могли бы подключить и внедрить зависимости. Вам следует проверить, наступает ли оно достаточно рано для вашего сценария.
Я тоже боролась с этим блоком разума:
Также я думаю, что родитель (кто бы он ни был) не должен нести ответственность за это.
Тогда кто будет? Смысл IoC в том, что что-то другое (родитель, модель представления, что-то, ...) определяет зависимости.