我制作了一个标记扩展,用于基于键翻译字符串。例子
<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 属性为空。我已经像这样测试了我的绑定
<TextBlock Text="{Binding KeyFromDataContext}" />
它工作正常。
有任何想法吗?