Возможно ли - в приложении WPF, NET Framework, внедрить мои собственные, определенные пользователем службы в аргумент IServiceProvider
, полученный MarkupExtension.ProvideValue
?
Обычно я делал все мои конвертеры значений происходят от расширения разметки просто для того, чтобы я мог создавать их встроенными в привязки атрибутов, если я хотел (вместо того, чтобы объявлять их как StaticResource).
Примерно так:
public class MyConverter : MarkupExtension, IValueConverter
{
public override object ProvideValue(IServiceProvider serviceProvider) => this;
// (IValueConverter implementation here... blah blah blah...)
Я никогда не использовал этот аргумент IServiceProvider
, но он уже доступен для меня. В документации говорится о встроенных службах, которые я могу использовать там. Но есть ли способ зарегистрировать мои собственные сервисы когда-нибудь, когда мое приложение запускается так, чтобы моё расширение разметки могло затем получить их?
(я уже понимаю, что могу использовать MultiBindings, я просто пытаюсь понять, могу ли я избежать их в некоторых случаях)