Я немного новичок в WPF, так что будьте спокойны со мной, ребята!
Я пытаюсь реализовать MarkupExtension, в котором я хочу сослаться на корневой элемент XAML, который вызывает расширение (мне нужен его элемент Name для поиска).
Следующий код прекрасно работает во время выполнения, но во время разработки я получаю сообщение об ошибке в окне конструктора.
[MarkupExtensionReturnTypeAttribute(typeof(string))]
public class TranslateExtension : MarkupExtension
{
public TranslateExtension(string key)
{
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
var root = ((System.Xaml.IRootObjectProvider)serviceProvider).RootObject as FrameworkElement;
return root.Name;
}
}
выдает ошибку в конструкторе:
Невозможно привести объект типа
InstanceBuilderServiceProvider для
тип
'System.Xaml.IRootObjectProvider'.
Что само собой разумеется - очевидно, что ProvideValue вызывается с поставщиком услуг, который не может быть преобразован в RootObjectProvider.
Есть ли работа вокруг? Или я делаю что-то действительно глупое?