Как разрешить значение привязки данных внутри MarkupExtension?
Я сделал расширение разметки для перевода строк на основе ключа. пример
<TextBlock Text="{Translate myKey}" />
Теперь я хочу иметь возможность использовать вложенные привязки для предоставления моих ключей. Пример:
<TextBlock Text="{Translate {Binding KeyFromDataContext}}" />
Когда я делаю это, я получаю объект System.Windows.Data.Binding. Вызвав ProvideValue и передав ServiceProvider, я могу получить BindingExpression:
var binding = Key as Binding;
if (binding == null) {
return null;
}
var bindingExpression = binding.ProvideValue(_serviceProvider) as BindingExpression;
if (bindingExpression == null) {
return null;
}
var bindingKey = bindingExpression.DataItem;
Я могу получить это bindingExpression, но свойство DataItem имеет значение null. Я проверил мою привязку, как это
<TextBlock Text="{Binding KeyFromDataContext}" />
и работает нормально.
Есть идеи?