sólo tiene que llamar al método de la unión
ProvideValue
. La parte difícil es que debe pasar un
IServiceProvider
válido al método ...
EDITAR: en realidad, eso no es cierto ... ProvideValue
devuelve un BindingExpression
, no el valor de la propiedad encuadernada.
Se puede utilizar el siguiente truco:
class DummyDO : DependencyObject
{
public object Value
{
get { return (object)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(object), typeof(DummyDO), new UIPropertyMetadata(null));
}
public object EvalBinding(Binding b)
{
DummyDO d = new DummyDO();
BindingOperations.SetBinding(d, DummyDO.ValueProperty, b);
return d.Value;
}
...
Binding b = new Binding("Foo.Bar.Baz") { Source = dataContext };
object value = EvalBinding(b);
No
muy elegante, pero funciona ...
Ah sí, eso fue todo. Gracias. – Inferis
que estoy tratando de hacer algo similar, pero se produzcan problemas, porque creo que necesito utilizar RelativeSource. ¿Alguna idea de cómo evitar el origen de parientes evaluado con respecto a DummyDO en lugar del objetivo implícito en el contexto del enlace? – tobriand
@tobriand, no estoy seguro de entender ... ¿Cuál es su caso de uso? –