在代码中获取绑定的结果

时间:2010-10-07 22:07:42

标签: wpf data-binding

我可能正在寻找错误的方法,但是:

有没有办法通过代码获得绑定的结果值?

可能有些明显的东西,但我找不到它。

1 个答案:

答案 0 :(得分:10)

您只需要调用绑定的ProvideValue方法。困难的是你需要将有效的IServiceProvider传递给方法... 编辑:实际上,这不是真的...... ProvideValue返回BindingExpression },而不是绑定属性的值。

您可以使用以下技巧:

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);

不是很优雅,但它有效...