【发布时间】:2010-10-07 22:07:42
【问题描述】:
我可能正在寻找错误的方式,但是:
有没有办法通过代码获取绑定的结果值?
可能是一些很明显的东西,但我就是找不到。
【问题讨论】:
标签: wpf data-binding
我可能正在寻找错误的方式,但是:
有没有办法通过代码获取绑定的结果值?
可能是一些很明显的东西,但我就是找不到。
【问题讨论】:
标签: wpf data-binding
只需要调用绑定的 编辑:实际上,这不是真的...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);
不是很优雅,但它可以工作......
【讨论】: