Я пытаюсь записать пользовательское MarkupExtension
сделать мою жизнь легче путем предоставления мне лучшего способа указать привязку в XAML. Однако я хотел бы знать, существует ли какой-либо способ, которым я могу получить доступ к объекту, который представляет файл MarkupExtension
используется в.
Другими словами, предположите, что у меня есть a UserControl
это определяет особое представление модели данных моей программы. Это управление имеет много визуального материала как сетки, границы и общее расположение. Если я использую мой MarkupExtension
на особом свойстве некоторого элемента в этом UserControl
, Я хочу получить доступ к экземпляру UserControl
, не зная то, что вводит его, (я планирую использование отражения).
Это вообще возможно?
В .NET 4.0 они добавили возможность IRootObjectProvider, но, к сожалению, в предыдущих версиях это невозможно. Если вы используете .NET 4.0, вы можете сделать следующее:
public override object ProvideValue(IServiceProvider serviceProvider)
{
var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider;
var root = rootObjectProvider.RootObject;
// do whatever you need to do here
}