Провел некоторые исследования, и оказалось, что я должен установить привязку в методе ProvideValue MarkupExtension, а затем вернуть текущее значение привязки. Немного нелогично, но пока что похоже на работу!
Вот примерно то, чем я закончил:
public override object ProvideValue( IServiceProvider serviceProvider ) {
IProvideValueTarget valueProvider = (IProvideValueTarget)serviceProvider.GetService( typeof( IProvideValueTarget ) );
// only need to do this if they're needed in your logic:
object @target = valueProvider.TargetObject;
object @property = valueProvider.TargetProperty;
MultiBinding result = new MultiBinding();
// set up binding as per custom logic...
return result.ProvideValue( serviceProvider );
}
Добавьте немного логики, слегка отряхните с обработкой ошибок и подайте.
Обновление: Оказывается, MultiBinding.ProvideValue () подключает саму привязку, основываясь на информации о цели и свойствах в serviceProvider
. Это намного чище.