Доступ “к текущему классу” от пользовательского MarkupExtension WPF

Я пытаюсь записать пользовательское MarkupExtension сделать мою жизнь легче путем предоставления мне лучшего способа указать привязку в XAML. Однако я хотел бы знать, существует ли какой-либо способ, которым я могу получить доступ к объекту, который представляет файл MarkupExtension используется в.

Другими словами, предположите, что у меня есть a UserControl это определяет особое представление модели данных моей программы. Это управление имеет много визуального материала как сетки, границы и общее расположение. Если я использую мой MarkupExtension на особом свойстве некоторого элемента в этом UserControl, Я хочу получить доступ к экземпляру UserControl, не зная то, что вводит его, (я планирую использование отражения).

Это вообще возможно?

7
задан devios1 15 June 2010 в 17:37
поделиться

1 ответ

В .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
}
13
ответ дан 6 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: