Проблемы с TemplateBinding
У меня есть расширение XAML SomeExtension, которое оформляется так:
<Rectangle Fill={SomeExtension <address of brush>}/>
Но когда я пытаюсь вместо <address of brush> подставить {TemplateBinding Content} (сам xaml-тэг Rectangle внутри ControlTemplate'а):
<Rectangle Fill={SomeExtension {TemplateBinding Content}}/>
то внутри кода расширения я получаю не контент, а объект типа TemplateBindingExpression. У него есть свойство TemplateBindingExtension, которое возвращает экземпляр одноимённого класса. У второго есть метод ProvideValue, и когда я его вызываю я опять получаю не контент, а TemplateBindingExpression. Замкнутый круг.
Что это за TemplateBindingExpression? Почему он так работает? Как мне взять и получить контент?
Код ProvideValue метода моего расширения:
public override object ProvideValue(IServiceProvider provider)
{
var content = Content /*свойство*/ is TemplateBindingExtension /*expression до этого преобразованно в extension*/ binding ?
binding.ProvideValue(provider) : Content;
// прочая обработка
}
EDIT:
Я использую SomeExtension внутри стиля в 2-х местах:
{SomeExtension MyBrush}{SomeExtension {TemplateBinding Content}}(вместо Content может быть любое другое свойство)
1-й случай работает корректно - возвращает кисть по адресу MyBrush. 2-й - нет. Вместо ожидаемой кисти по адресу, равному контенту, он возвращает какой-то TemplateBindingExpression, из которого значение контента получить нельзя, но очень хочется. Как это сделать?