Я думаю, что это возможно.Если у меня будет время, я попытаюсь создать MarkupExtension, который поможет это сделать.
На данный момент моя идея - создать класс MarkupExtension со свойствами Source и Method.В XAML мы будем использовать его следующим образом:
<TextBlock Text="{BindExt Source={Binding DataContext}, Method=MyExtMethod}" />
Source - это свойство, в котором мы устанавливаем исходный объект, для которого мы вызываем MyExtMethod (метод расширения).Из-за производительности при поиске такого метода я, вероятно, добавляю другое свойство, называемое ExType, где будет храниться тип статического класса, в котором был объявлен MyExtMethod.Это может помочь повысить производительность поиска метода расширения, но синтаксис XAML будет длиннее: /
Так что теперь у нас есть несколько выражений прототипа:
<TextBlock Text="{BindExt Source={Binding DataContext}, Method=MyExtMethod, ExType=ex:ExtMethods}" />
, где префикс ex может быть, напримерПространство имен BrightShadow.Data.Extensions:
xmlns:ex="clr-namespace:BrightShadow.Data.Extensions;assembly=BrightShadowAssembly"
Возможно, в скором будущем что-нибудь об этом я опубликую в своем польском блоге здесь .